1.
奥运参赛国出场次序:
输入奥运会参赛国国名,并按照字典序对其进行排序。
要求:参赛国数量不超过150个,每个国家的名字不超过9个字符。
提示:‘\0’占一个字符。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | # include <string.h> # include <stdio.h> #define N 151 #define MAX_LEN 10 void SortString(char str[][MAX_LEN], int n); int main() { int i, n; char name[N][MAX_LEN]; printf( "How many countries?" ); scanf( "%d" ,&n); getchar(); printf( "Input their names\n" ); for (i= 0 ;i<n;i++) gets(name[i]); SortString(name, n); printf( "Sorted results:\n" ); for (i= 0 ;i<n;i++) { puts(name[i]); } return 0 ; } void SortString(char str[][MAX_LEN], int n) { int i,j; char temp[MAX_LEN]; for (i= 0 ;i<n;i++) { for (j=i+ 1 ;j<n;j++) { if (strcmp(str[j],str[i])< 0 ) { strcpy(temp,str[i]); strcpy(str[i],str[j]); strcpy(str[j],temp); } } } } |
2.
统计正整数中指定数字的个数
从键盘输入一个正整数number,求其中含有指定数字digit的个数。例如:从键盘输入正整数number=1222,若digit=2,则1223中含有 3个2,要求用函数实现。
函数原型为:int CountDigit(int number,int digit);
输入格式: "%d,%d"
输出格式:
输入提示信息:"Input m,n:\n"
输出格式:"%d\n"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # include <stdio.h> int CountDigit( int number, int digit); main() { printf( "Input m,n:\n" ); int m,n; scanf( "%d,%d" ,&m,&n); printf( "%d\n" ,CountDigit(m,n)); } int CountDigit( int number, int digit) { int c= 0 ; while (number) { if (digit==number% 10 ) {c++; number=number/ 10 ; } } return c; } |
3.冒泡程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | # include <stdio.h> #define LEN 10 void bubble( int dat[], int length); main( ) { int data[LEN]={ 0 }, i; for (i= 0 ; i<= LEN- 1 ; i++) { scanf( "%d" ,&data[i]); } bubble(data,LEN); for (i= 0 ; i<= LEN- 1 ; i++) { printf( "%8d" , data[i]); } } void bubble( int dat[], int length) { int head, tail,round,i; int t; head = 0 ; tail = length - 1 ; for (round = head; round <= tail; round++) for (i = tail; i >= round+ 1 ; i--) if ( dat[i] < dat[i- 1 ] ) { t=dat[i]; dat[i]=dat[i- 1 ]; dat[i- 1 ]=t; } } |
4.实验题
编写程序统计从键盘输入的一行文本中各个字母的个数。
输入以回车键结束。
不区分大小写,大写字母与相应的小写字母按照同一个字母看待。
要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按照字母在字母表中的先后顺序进行排序。
***输入格式:调用getchar()函数依次输入每个字符
***输出格式:"%c(%c):%d\n"
例如输入以下文本:
Hello World
程序将输出:
L(l):3
O(o):2
D(d):1
E(e):1
H(h):1
R(r):1
W(w):1
A(a):0
B(b):0
C(c):0
F(f):0
G(g):0
I(i):0
J(j):0
K(k):0
M(m):0
N(n):0
P(p):0
Q(q):0
S(s):0
T(t):0
U(u):0
V(v):0
X(x):0
Y(y):0
Z(z):0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | # include <stdio.h> # include <stdlib.h> void bubble_sort( int a[], int c[], int n); int main( void ) { int i; int c[ 27 ]={ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' }; char j; char a; int b[ 26 ]={ 0 }; int count[ 26 ]={ 0 }; while ((a = getchar()) != '\n' ) { for (j= 'A' ;j<= 'Z' ;++j) { if (a == j || a == j+ 32 ) { b[j- 'A' ]++;count[j- 'A' ]++; } } } bubble_sort(b,c, 26 ); for (i= 0 ;i< 26 ;++i) { printf( "%c(%c):%d\n" ,c[i]- 32 ,c[i],b[i]); } } void bubble_sort( int a[], int c[], int n) { int i, j, temp; for (j = 0 ; j < n - 1 ; j++) for (i = 0 ; i < n - 1 - j; i++) { if (a[i] < a[i + 1 ]) { temp = a[i]; a[i] = a[i + 1 ]; a[i + 1 ] = temp; temp = c[i]; c[i] = c[i + 1 ]; c[i + 1 ] = temp; } } } |
这道题是我做过后觉得比较难的,可能算法并不是很简便,如果各位大神有什么好的方法请一定告诉我。
二月 | ||||||
---|---|---|---|---|---|---|
日 | 一 | 二 | 三 | 四 | 五 | 六 |
26 | 27 | 28 | 29 | 30 | 31 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 1 |