前期学习遇到的一些问题和总结

1. # 判断数是否为质数

  1.  int main()
     {
     int m = 0;
     scanf("%d",&m);
    
     int Q = 0;
     for (Q = 2; Q < m; Q++)
     {
     	if (m % Q == 0)
        break;
     }
     if(m%Q != 0)
     printf("%d是质数\n",m);
     return 0;
     }
    

一些小的需要注意的点

第一个

int main()
{
int a = 0,b = 0;
scanf("%d %d" ,&a,&b);
printf("%d",2.0*a*b);//这里强制转换不了,其他情况要实践了才知道(所以这里a输入1,b输入2,得出结果是0)
return 0}


第二个
switch语句的巧用

case1:
case3:
     a=b;
再break的话   case2和case3的情况都是a=b

while(i<100);这里这个分号是错的,这样语句不会结束,会一直进行,把这个分号去了就行

i++;

int count_bit_one(unsigned int n)//这样可以让n比如等于负1时也可以输出他的二进制位中有多少个1
{
int count =0;
while(n)
{
if ((n%2) ==1)
count++
n = n/2;
}
return count;
}



#include<stdio.h>
int main()
{

int num = 0;
scanf("%d",&num);
int ret = count_bit_one(num);
printf("%d\n",ret);
return 0;
}

for (i = 1; i<5;i++)  M
{ scanf("%d",&n);
  if(n<0)
continue;     这里只会跳一次循环,跳到M(不会重新初始化i)去
printf("n = %d\n",n);
}
if()
break;//这也算一条语句




//递归函数定义举例
double Fact(int n)

int F(int h)

{ F(1) = 1; F(2) = 1;

if (h >= 3)

F(h) = F(h - 1) + F(h - 2);

return F(h);}(自定义函数定义举例)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void DrawTriangle(int n, char c);
int main()
{
	int N = 0;
	char C = 0;
	DrawTriangle(5, '*');
	printf("\n");
	DrawTriangle(10, '#');\\注意这里要打‘’
    return 0;
}
void DrawTriangle(int n, char c)
{
	int k = n;
	do
	{

		int i = 0;
		for (i =1; i <=n ; i++)
		{
			printf(" ");

		}
		for (i = n; i <= k; i++)
		{
			printf("%c ",c);
		}
		n--;
		printf("\n");
	} while (n >= 1);

}

float sum =0,average;//对sum初始化为0,对average定义

打碎花瓶题

编写程序exp5_6.c,请判断花瓶是谁打碎的。教师花瓶碎了,班级只有四个小同学,老师询问小同学,已知是其中1人打碎的,还知道4人中每个人要么是诚实的,要么总是说谎的。 小同学回答老师的问题是: 甲说:“乙没有打碎,是丁打碎的。” 乙说:“我没有打碎,是丙打碎的。” 丙说:“甲没有打碎,是乙打碎的。” 丁说:“我没有打碎。” 根据四人回答判断谁打碎了花瓶。

#include <stdio.h>

int main() {
    int a, b, c, d; // 四个小朋友是否说谎(1表示说谎,0表示诚实)
    int A = 0, B = 0, C = 0, D = 0; // 四个小朋友是否打碎花瓶(1表示打碎,0表示没打碎)

    for (a = 0; a < 2; a++) {
        for (b = 0; b < 2; b++) {
            for (c = 0; c < 2; c++) {
                for (d = 0; d < 2; d++) {
                    // 根据小朋友的诚实情况,确定谁打碎了花瓶
                    if (d == 0) {
                        D = 0;
                    }
                    else {
                        D = 1;
                    }
                    if (c == 0) {
                        A = 0;
                        B = 1;
                    }
                    else {
                        A = 1;
                        B = 0;
                    }
                    if (b == 0) {         //但是这个程序没有检查ABCD被重复赋值问题,自己写时要加上
                        B = 0;
                        C = 1;
                    }
                    else {
                        B = 1;
                        C = 0;
                    }
                    if (a == 0) {
                        B = 0;
                        D = 1;
                    }
                    else {
                        B = 1;
                        D = 0;
                    }

                
                    // 如果没有矛盾,检查是否只有一个人打碎了花瓶
                    if (A + B + C + D == 1) {
                        printf("打碎花瓶的是:");
                        if (A == 1)
                            printf("甲\n");
                        else if (B == 1)
                            printf("乙\n");
                        else if (C == 1)
                            printf("丙\n");
                        else if (D == 1)
                            printf("丁\n");
                      
                    }
                }
            }
        }
    }

    printf("无正确答案\n");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值