1、投票计数
有三个候选人:TOM,ROSE,KATE,有20人投票选取一人做组长,编程完成投票计数功能。输出人名和相应的得票数。
1 #include <stdio.h> 2 #include <string.h> 3 #define N 32 4 5 int main() 6 { 7 enum {TOM, ROSE, KATE}; 8 int tom=0, rose=0, kate=0; 9 10 const char *s[3] = {"TOM", "ROSE", "KATE"}; 11 char ts[N] =""; 12 13 int n=20; 14 while(n--) 15 { 16 gets(ts); 17 if(!strcmp(ts,s[TOM])) 18 tom++; 19 if(!strcmp(ts,s[ROSE])) 20 rose++; 21 if(!strcmp(ts,s[KATE])) 22 kate++; 23 } 24 25 printf("TOM=%d,ROSE=%d,KATE=%d",tom,rose,kate); 26 27 return 0; 28 }
2、拼音读数
读入一个整数,范围是[-100000,100000],然后,用汉语拼音将这个整数的每一位输出出来。
如输入1234,则输出:yi er san si 注意,每个字的拼音之间有一个空格
当遇到负数时,在输出的开头加上“fu”,如-2341输出为:fu er san si yi
1 #include <stdio.h> 2 #include <string.h> 3 #define N 100 4 5 int main() 6 { 7 const char *s[10] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" }; 8 char t[N] = ""; 9 gets(t); 10 char *p = t; 11 if(*p=='-') 12 { 13 printf("fu "); 14 p++; 15 } 16 while(*p) 17 { 18 printf("%s ", s[*p-'0']); 19 p++; 20 } 21 return 0; 22 }
3、输出魔方阵
魔方阵就是一个奇数阶方阵,每行、每列和对角线上的数据之和相等。
1 #include"stdio.h" 2 #define N 100 3 int main() 4 { 5 int a[N][N] = {0}; 6 int n; 7 8 while (scanf("%d",&n) && n) //多组数据,输入0结束 9 { 10 int i = 0,j = n / 2 ; //i j,分别表示数字的行和列 11 for (int r = 1; r <= n*n; r++) 12 { 13 if (a[i][j] == 0) //如果等于0表示该位置没有数字 14 { 15 a[i][j] = r; 16 } 17 else //表示该位置已经有数字,于是填写在上一个数字的下方 18 { 19 i = (i + 2) % n; //%n以保证不会超出界限 20 j = j == 0 ? n - 1 : j - 1; //定为到上一个数字的下方 21 a[i][j] = r; //填写数字 22 } 23 i = i==0 ? n - 1 : i - 1; //定为下一次的位置 24 j = (j +1) % n; //%n以保证不会超出界限 25 26 } 27 for (i = 0; i < n; i++) //打印二维表 28 { 29 for (j = 0; j < n; j++) 30 { 31 printf("%3d", a[i][j]); 32 a[i][j] = 0; //赋值为0保证下一组数据的正确执行 33 } 34 printf(" "); 35 } 36 } 37 return 0; 38 }
4、删除字符串中的空格
输入一个字符串,检查字符串的内容,如果有空格则删除空格,输出最终的字符串
1 #include <stdio.h> 2 void delblank(char *s ) 3 { 4 char *p = s, *q = s; 5 while(*p) 6 { 7 if(*p!=' ') 8 *q++ = *p; 9 p++; 10 } 11 *q = '