13机制本科C语言程序设计复习资料

更新时间:2024-04-11 02:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言程序设计复习资料

1. 计算定期存款本利之和

设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital均由键盘输入。 2. 编写一个C程序,求a、b、c、d四个数中的最大者。

3.输入4个整数,要求按由小到大顺序输出。得到正确结果后,修改程序使之按由大到小顺序输出。 4.根据以下函数关系,对输入的每个x值,计算出相应的y值。

?ex?1?y??|x|?2?sin(x2)? #include void main() { float x,y; scanf(\

if ( ) y= ; else if( )

y= ;

else printf(\}

相关知识点:if语句的嵌套;数学函数的调用方式。 5. 写程序实现以下函数:

0?x?13?x?4

当x取其他值时

#include

?x(x?1)?y??2x?1(1?x?10)

?3x?11(x?10)?用scanf函数输入x的值,求y值。运行程序,输入x的值(分别为x<1、1≤x<10、x>10三种情况),检查输出的y值是否正确。

6. 编写程序,要求对输入的数字1~7转换成文字星期几,对其它数字不转换。例如,输入5时,程序应该输出Friday。 7. 程序 求1+?+100,填空,实现该功能。

#include void main() {

int s,i;

s=0; /* 第5行 */ for( ) s=s+i;

printf(\}

8. 若输入12345,分析输出结果是多少?上机验证。

#include void main( )

{ long data;

scanf(\

第1页

C语言程序设计复习资料

while(data)

{ printf(\ data=data/10; } }

9. 填空完成程序,程序输入一批考试分数,用?1作为结束标志,若输入大于100分,则提示重新输入,然后计算最高分、最低分与平均分。请调试、检查程序中的错误,并改正之。

#include void main( ) { int mark;

int n=0, sum=0 ; int max=0 , min=100 ; for ( ; ; )

{ scanf(\ if ( mark > 100 )

{ printf(\ reinput \\n \ ___________; }

if ( mark==-1) ___________; n ++ ;

sum=sum + mark ; if(___________ ) max = mark ; if(___________)

min = mark ; } sum=sum/ n ;

printf(\ }

10程:输入20个1~90的整数,分类统计1~30、31~60、61~90的数各有多少个?

编程点拨:

(1) count1计1~30的个数,count2计31~60的个数,count3计61~90的个数。

(2) 用for循环20次实现该程序的功能:输入一个整数x,判断该数所在的范围,若x是1~30,则count1加1;

若x是31~60,则count2加1;若x是61~90,则count3加1。 (3) 最后,输出统计的结果。 #include void main( )

{ int count1=0,count2=0,count3=0; int i,x;

printf(“Please input 20 numbers:”); for(i=0;i<20;i++) { scanf(“%d”,&x);

??? /*补充完成程序*/ }

第2页

C语言程序设计复习资料

/* 输出统计结果 */ ????? }

补充完成该程序。

11.编程:素数是除了1和其本身以外,不能被其他自然数整除的自然数。从键盘输入一个数,判断该数是不是素数?

编程点拨: a) b) c)

输入这个数x。

用for循环2~x-1,用2~x-1的每一个数去除x,若有一个数整除x,则说明x不是素数;否则,x就是素数。

最后,将判断结果输出。

#include void main( ) { int i, x;

printf(\ one natural integer: \scanf(\

for(i=2;i

12.编程:显示所有的水仙花数。谓水仙花数,是指一个3位数,其各位数字立方和等于该数字本身。例,153是水仙花数,因为153=13+53+33 。有两种解题思路,选择其中之一编程实现:

13.调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。写出调试过程。 #inclue

#define N 10 void main( ) { int i,a[N],av;

for(i=0;i

printf(\; }

for(i=0;i!=N;i++) av+=a[i];

printf(\; }

14.有一个3行4列的距阵,现要求编程求出其中最大的那个元素的值,以及它所在的行号与列号。程序的初始说明和输出语句如下所示,请补充完成该程序。

#include void main( ) {

int i, j, row, colum, max;

static int a[3][4] = {{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};

printf(\ max, row, colum);

……

第3页

C语言程序设计复习资料

}

15. 数组中已存互不相同的10个整数,从键盘输入一个整数,输出与该值相同的数组元素下标。 编程点拨:

① 输入要查找的变量x的值; ② 使用循环将输入的数和数组元素逐个进行比较,若找到,则提前退出循环; ③ 根据循环是正常结束还是提前结束来判断是否找到x。 部分源代码:

#include void main( )

{ int i, x, a[10]={1,2,3,4,5,6,7,8,9,10};

/*输入x变量的值 */ for ( i=0; i<10; i++ ) printf(\ printf(\

/* 循环查找与x相等的元素 */ if ( )

printf(\ /* 输出查找结论 ,输出下标值 */

else

printf(\

}

16.编写程序,任意输入10个从大到小的整数数列,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。

部分源代码:

#include #define N 11 void main() { int i,j,a[N];

printf(“Please input 10 numbers:”); for (i=0; i

scanf(“%d”,&a[i]); /*乱序输入10个整数*/ …… }

相关知识:①比较排序法、选择排序法和冒泡排序法;②数据元素的插入。 17.输入十个互不相同的整数并存在数组中,找出最大元素,并删除。

18. 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空:

#include void main( )

{ float x[1000], sum=0.0, ave, a; int n=0, i;

printf (\ mark : \\n\ scanf(\

while (a>=0.0 && n<1000) { sum+= ;

x[n]= ; n++;

第4页

C语言程序设计复习资料

scanf(\

}

ave= ; printf (\ printf (\ for (i=0; i

printf(\

}

19. 综合编程题:打印如下杨辉三角形

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

编程点拨:

杨辉三角形有如下特点: ① ② ③

只有下半三角形有确定的值; 第一列和对角线上的元素值都是1;

其它元素值均是前一行同一列元素与前一行前一列元素之和。

20.调试下列程序,使之具有如下功能:任意输入两个字符串(如:“abc 123”和“china”),并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的字符串放在b数组。并输出。 #include #include void main()

{ char a[10],b[10]; int c,d,k,ch; scanf(\ scanf(\ printf(\ c=strlen(a); d=strlen(b); if(c>d)

for(k=0;k

{ ch=a[k];a[k]=b[k];b[k]=ch;} printf(\ printf(\ }

21.阅读下面的程序,然后回答后面的问题: #include #include void main( ) {

char s1[80], s2[40]; int i = 0, j = 0;

第5页

C语言程序设计复习资料

}

printf(\ scanf(\

printf(\ scanf(\ while (s1[i]!= '\\0' )

i++;

s1[i++]=s2[j ++];

while (s2[j]!= '\\0' )

s1[i]= '\\0';

printf(\

编辑、运行该程序,然后分别输入 Country 和side。请问: ① 程序执行的结果是什么? ② 该程序的功能是什么?

22.填空完成程序,使其功能是对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdefg和abceef,则输出为-1。程序如下:

#include

void main ( )

{ char str1[100],str2[100]; int i,s;

printf(\ printf(“\\n Input string 2:\\n”);gets(str2); i= (1) ;

while((str1[i]==str2[i])&&(str1[i]!= (2) )) i++; s= (3) ; printf(\ }

23.填空完成程序,使其的功能是统计从终端输入字符中每个大写字母的个数。用#号作为输入结束标志。程序如下: #include #include void main ( )

{ int num[26],i; char c; for (i=0;i<26;i++) num[i]=0;

while ( (1) != '#') /* 统计从终端输入的大写字母个数*/ if (isupper(c)) num[c-65] (2) ;

for (i=0;i<26;i++) /* 输出大写字母和该字母的个数*/ if (num[i])printf(\ (3) ,num[i]); }

24.编写程序,输入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f处插入字符串s2。如:输入\、\和位置3,则输出:\。

25. 阅读程序,注意在调试时F11和F10的区别,还要注意函数调用过程中形参、实参的关系。

#include

第6页

C语言程序设计复习资料

void main() { int x=10,y=20;

void swap (int ,int);

printf(\swap(x,y);

printf(\ }

void swap (int m,int n) { int temp;

printf(\temp=m;m=n;n=temp;

printf(\}

26. 下列程序是实现求素数的,请填空完成该程序,并上机运行测试。

#include #include void main() { int m;

; /* 申明求素数函数 */ printf(\scanf(\

; /* 调用求素数函数 */ }

void prime(int n) { int i,k; k=sqrt(n); for(i=2;i<=k;i++)

if (___________;) break;

if(___________)

printf(\else printf(\ }

27. 下列程序的功能是从键盘上输入的若干个数并求出最大值。请填空完成该程序。#include void main( ) { int i;

int s[10], max;

/* Findmax()函数的申明 */ ; printf(\ /* 输入10个数据到s数组中 */ ;

/* 调用Findmax函数 */

;

第7页

C语言程序设计复习资料

for (i=0;i<10; i++)

printf(\

printf(\ max is %d \

}

int Findmax( int x[ ], int n ) { int max,i; ___________; for ( i=1; i

28. 下列程序的功能是从键盘上输入的若干个数按升序排序。请填空完成该程序。#include void main( ) { int i , k; float s[100], j ; printf(\ for (i=0; scanf(\

s[i]=j; _________;

for (k=0; _________; k++)

printf( \ printf(\

}

void sort(float x[ ], int n ) { int i, j, temp,min; for ( i=0; i

min=j; if(min!=i) { temp=x[i]; x[i]=x[min]; x[min]=temp; } }

}

29. 编写程序,实现由主函数输入m、n,按下述公式计算并输出Cnm的值。

Cnm!m?n!(m?n)!

提示:定义一个求阶层的函数,然后在主函数中调用三次即可求得。

第8页

C语言程序设计复习资料

30.上机调试程序,观察静态局部变量在调用过程中的变化。

#include void main( ) { int i ;

int f(int);

for ( i = 1; i <= 5; i ++)

printf( \

printf(\}

int f ( int n) {

static int j = 1; j = j * n; return( j ); }

31.上机验证以下程序的运行结果

#include void main()

{ int i,a[]={1,2,3},*p;

p=a;/*将数组a首地址赋给指针p*/ for (i=0;i<3;i++)

printf(\}

32.编写程序,使之具有如下功能:用指针法输入12个数,然后按每行4个数输出。

33.编写下列程序的sum函数和swap函数,使之具有如下功能:任意输入2个数,调用两个函数分别求:的和, ⑵ 2个数交换值。 #include void main( )

{ int a,b,c,*p=&c;

void sum(int ,int ,int *); void swap(int * ,int * ); scanf(\ sum(a,b,p); swap(&a,&b);

printf(\

printf(\}

void sum(int a,int b,int *c) { }

void swap(int *a,int *b) { }

第9页

⑴ 2个数 C语言程序设计复习资料

34.下面的程序是用来从键盘输入是个整数,然后求出其中的最小值。填写空缺部分。

#include int table[10];

void lookup(int *t,int *a,int n) { int k; *a=t[0];

for(k=1;k

if( ) *a=t[k]; }

void main()

{ int k,min,*p=&min; for (k=0;k<10;k++) scanf(\lookup( , ,10); printf(\}

35.编程题:已知一个整型数组a[5],其各元素值为4,6,8,10,12。使用指针求该数组元素之积。

36. 阅读下面的程序。

void main() {

char a[]=\int i; p1=a;p2=b;

for( ; *p1!=’\\0’;p1++,p2++)

*p2=*p1; p2=’\\0’;

printf(\printf(\for(i=0;b[i]!=’\\0’;i++) printf(\

}

编辑、运行该程序,然后分别输入 Country 和side。请问:

① 程序执行的结果是什么? ② 该程序的功能是什么?

37.以下是一个编写input()和output()函数输入,输出5个学生的数据记录;请在空白处填上适当的语句。

#include #define N 5

struct student { char num[6]; char name[8]; int score[4]; } stu[N];

void input(struct student stu[]) { int i,j;

for(i=0;i

printf(\请输入%d个学生中第%d个的信息:\\n\

第10页

C语言程序设计复习资料

printf(\学号:\

scanf(\ printf(\姓名:\

scanf(\ for(j=0;j<3;j++) {

printf(\成绩%d:\

scanf(\ }

printf(\ } }

void print(struct student stu[]) {

int i,j;

printf(\

printf(\学号 姓名 成绩1 成绩2 成绩3\\n\printf(\ for(i=0;i

printf(\ for(j=0;j<3;j++)

printf(\ printf(\ }

printf(\}

void main() {

input( ); print(stu); }

第11页

C语言程序设计复习资料

printf(\学号:\

scanf(\ printf(\姓名:\

scanf(\ for(j=0;j<3;j++) {

printf(\成绩%d:\

scanf(\ }

printf(\ } }

void print(struct student stu[]) {

int i,j;

printf(\

printf(\学号 姓名 成绩1 成绩2 成绩3\\n\printf(\ for(i=0;i

printf(\ for(j=0;j<3;j++)

printf(\ printf(\ }

printf(\}

void main() {

input( ); print(stu); }

第11页

本文来源:https://www.bwwdw.com/article/jkyp.html

Top