问题
合法,对表达式进行求值,但是结果没有存在任何地方
数据类型 变量名 = 值或表达式
合法,如果你想为一些语句引入变量,但是又想变量只能这些语句使用,就可以这样定义
if(a); else {a++;}
0-9
1 while ((ch=getchar()!=EOF)
2 checksum +=ch;
3 putchar(ch);
4 printf("Checksum=%d\n",checksum);
容易死循环,且putchar不在while循环里
需要循环体至少执行一次的时候用do合适
1 #include<stdio.h>
2 int main()
3 {
4 int i;
5 for (i=1;i<4;i++)
6 {
7 switch(i%2){
8 case 0:
9 printf("even\n");
10 case1:
11 printf("odd\n");
12 }
13 }
14 return 0;
15 }
odd even odd odd
int main()
{
int num;
scanf("%d", &num);
while (num--)
{
printf("\n");
}
return 0;
}
int main()
{
int x,y,a,b;
scanf("%d %d %d %d", &x,&y,&a,&b);
if (x < y || a >= b)
printf("WRONG\n");
else
printf("RIGHT\n");
return 0;
}
int main()
{
int year;
int leap_year;
scanf("%d", &year);
if (year % 4 == 0)
{
if (year % 100 == 0)
{
if (year % 400 == 0)
leap_year = 1;
else
leap_year = 0;
}
else
leap_year = 1;
}
else
{
leap_year = 0;
}
printf("%d", leap_year);
return 0;
}
1 #include<stdio.h>
2 int main()
3
4 {
5 int i;
6 printf("Please enter a number(1~5):");
7 scanf("%d",&i);
8 switch(i)
9 {
10 case 1:
11 printf("who\n");
12 break;
13 case 2:
14 printf("what\n");
15 break;
16 case 3:
17 printf("when\n");
18 break;
19 case 4:
20 printf("where\n");
21 break;
22 case 5:
23 printf("why\n");
24 break;
25 default:
26 printf("don't know\n");
27 break;
28 }
29 return 0;
30 }
while(hungry())
{
eat_humberger();
}
do
{
eat_humberger();
}
while(hungry())
#include<stdio.h>
int main()
{
int pre,tem;
printf("precipiting=");
scanf("%d",&pre);
printf("tempreture=");
scanf("%d",&tem);
if(pre)
{
if(tem<32)
printf("snowing\n");
else
printf("raining\n");
}
else
{
if(tem<60)
printf("cold\n");
else
printf("warm\n");
}
return 0;
}
编程练习
int main()
{
float a = 1;//第一个近似值和第n个近似值
float b;//第n+1个近似值
float n;//要求的数
scanf("%f", &n);
for(;n<0;)
{
printf("输入错误,请重新输入\n");
scanf("%f", &n);
}
while (1)
{
b = (a + n / a) / 2; //算出第n+1个近似值
if (b == a)break;//直到a = b时跳出循环
a = b;//把第n+1个赋给a,然后继续循环计算第n+2个近似值
}
printf("%lf",b);
return 0;
}
1 int main()
2 {
3 int i = 0; //2-100
4 for (i = 2; i <= 100; i++)//1不是质数
5 {
6 int flag = 0;/*在这里定义标志位,目的是每次进入第一个for循环都让flag=0,
7 如果没有进入第11行的if循环,就还是0,即质数*/
8 int a = 2 ;
9 for (a = 2; a < i; a++)//这里当i=1和2时,就因为a>=i而无法进入循环
10 {
11 if (i % a == 0)//若不是质数,就置标志位为1
12 {
13 flag = 1;
14 break;
15 }
16 }
17 if (flag == 0)//标志位为0表示是质数,就打印出来
18 {
19 printf("%d ", i);
20 }
21 }
22 return 0;
23 }
int main()
{
int a, b, c;
printf("请输入三条边的长度\n");
scanf("%d %d %d", &a, &b, &c);
if (a + b > c && a + c > b && c + b > a)
{
if (a == b || a == c || b == c)
{
if (a == b || b== c)
{
printf("等边三角形");
}
else
{
printf("等腰三角形");
}
}
else
printf("普通三角形");
}
else
{
printf("不组成三角形");
}
return 0;
}
void copy_n(char dst[], char src[], int n)//从src->dst
{
int count=0;
for(count=0;count<=n-1;count++)
{
if (*src != NULL)
{
*dst = *src;
dst++;
src++;
}
else
{
*dst = NULL;
dst++;
}
}
}
int main()
{
int n = 10;
char a[10] = { 0 };
char b[10] = { "abcd"};
copy_n(a, b,5);
printf(a);
return 0;
}
#define MAX_LINE 20 //最大处理行数
#define MAX_COLS 128 //最大处理列数
void select(char input[MAX_LINE][MAX_COLS], char output[MAX_LINE],int i)//i是行数
{
int flag = 0;//定义一个标志位,用来看比较到哪一行了
while (flag <= i)
{
if (strcmp(input[flag], input[flag+1]) == 0)//比较相邻的两行
{
strcpy(output, input[flag]);//把其中一行移到output中待用
/*接下来比较相邻的两行是否和第三行也相等,若相等,就不打印,就flag++之后继续比较,直
到不相等,此时的比较起始位置就是这个与之前的行不相等的一行*/
if (strcmp(output, input[flag + 2]) != 0)printf("%s\n", output);
}
flag++;//比较的起始位置往后移动1个
}
}
int main()
{
char input[MAX_LINE][MAX_COLS] = { 0 };
char output[MAX_LINE] = { 0 };
int i = 0;
while (gets(input[i]) != NULL)i++;//一直读取输入行,直到读取到NULL,
select(input, output,i); //即我们可以直接Ctrl+Z结束读取
return 0;
}
int substr(char dst[], char src[], int start, int len)
{
int flag = 0;
int dst_n = 0;
if (start > (strlen(src) - 1) || start < 0 || len < 0)
{
if (len < 0)
{
len = -len;
while (len--)dst[dst_n++] = NULL;
}
else //start > (strlen(src) - 1) || start < 0
{
while (len--)dst[dst_n++] = NULL;
}
}
else
{
while (len--)
{
dst[dst_n++] = src[start++];
if (src[start] == '\0') //start在一直++,len还没有减到零就遇到src的最后一位时,
就结束转移
{
dst[dst_n]=NULL;
flag = 1; break;
}
}
//这是在len等于0后,直接就是结束dst中字符的转移,在结尾加上NULL
if (flag == 0)
dst[dst_n] = NULL;
}
return strlen(dst);
}
int main()
{
char src[20] = { "HELLOW111111" };
char dst[20] = { 0 };
int len = 20;
int start =5;
int ret = substr(dst, src, start, len);
printf("%s\n%d",dst, ret);
return 0;
}
void deblank(char string[])
{
int i = 0;
int len = 0;
while (1) //目的是获取字符
{
string[len] = getchar(); //不断获取字符
if (string[len] == '\n') //当获取的字符为NULL时代表字符串结束,我们用换行符来代替
break; //跳出while循环
len++; //否则就继续获取字符
}
for (i = 0; i < len; i++) //目的是删减空格
{
if (string[i] == ' ' && string[i + 1] == ' ') //判断是否有连着的空格
continue; //如果有,就先不打印,而是开始下一次的判断
putchar(string[i]); //没有连着的空格,就打印出来当前字符
}
}
int main()
{
char str[1000];
printf("请输入一串字符\n");
deblank(str);
return 0;
}