c语言上机题目精选(附答案)
C语言上机试题及答案
实验一Visual C++6.0的使用及顺序结构程序设计一、实验目的1、掌握启动和退出VC6 的方法。
2、熟悉 VC6 开发环境。
3、初步掌握简单程序的上机操作基本步骤,熟悉 C 单文件程序的输入、编译、链接和运行过程。
4、初步掌握程序的编辑修改和调试。
5、熟练使用赋值运算、算术运算等表达式。
6、熟练使用标准输入、输出函数及各种数据类型的格式说明符。
二、实验内容1、下面C语言程序,其功能是显示字符串“欢迎同学们来到华北水院计算中心!”。
请同学们按照下面的实验指导学习VisualC++6.0的使用。
1 .启动 VisualC++6 .0 开发环境(1)单击开“始”按钮,选择程“序”——〉“Microsoft Visual Studio6.0菜单项,单击“MicrosoftVisualC++6.0”,屏幕出现标题为“当时的提示”的窗口。
(2)单击“结束”按钮,关闭窗口,进入VC6.0 开发环境的主窗口。
2 .使用 Visual C++6.0 对一个 C 程序进行编辑、编译、连接和运行。
⑴分析Visual C++6.0 中程序的开发过程与其它高级语言的开发过程相仿,都要经过编辑、编译、连接和运行四个步骤。
⑵步骤①编辑图 1-1 New 对话框编辑是将 C 源程序输入计算机的过程。
在Visual C++6.0 主界面下,点击File 菜单,选择Ne w 菜单项,即可出现New 对话框,如图1-1 所示。
在弹出窗口中的Files 标签页下,选择C++ Sour ce File。
在选项卡右面的File 编辑框里输入文件名如“Exa.c”,在 Location 编辑框里输入文件路径,2如 : \test”。
点击 OK 按钮。
将出现编辑窗口 ,如图 1-2 所示。
在图 1-2 所示的右端编辑窗口里输 入以下 C 源程序并保存文件。
图 1-2 编辑窗口②编译编译是使用系统提供的编译器将文本文件 Exa.c 生成机器语言的过程 ,结果为 Exa.obj ,由于没有 得到系统分配的绝对地址,还不能直接运行,如图 1-3 所示。
C语言上机题参考答案
20、设有1<=n<=500个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进
行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的
报数,如此进行下去直到所有的人都出圈为止。
要求按出圈次序输出编号。
输入格式如下:
n s m
示例:
输入:
6 1 3
输出:
3 6 4 2 5 1
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
}
8、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
if(x>1) y=6*x+5;
printf("%d",y);
}
三、循环图形
7、编程输出n行图形(n值通过键盘输入)
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
******
#include<stdio.h>
void main()
{int i,j,n;
printf("%.2f\n",(a+b+c)/3.0);
C语言程序设计上机考试试题和参考答案
printf("Input str1:\n"); gets(str1); //1
printf("Input m and n:\n"); scanf("%d%d", &m, &n); //1
mystrcpy(str1, str2, m, n); //2 puts(str2); }
1、请按行读入数据 2、请按给定的函数原型编写程序,否则即使程序运行结果正确,也不给分。 参考答案
#include<stdio.h>
void Input(int a[][10], int n);
int Compute(int a[][10], int n);
main()
{
int n, a[10][10]; int sum;
//2
{
int i, flag = 0, sum = 0; //1
for (i = 1; i <= n / 2; i++) //1
{
if (n % i == 0)
//1
{
sum = sum + i; //1
}
}
if (sum == n)
//1
{
flag = 1;
}
return flag;
//1
} 3.(15 分)请按给定要求编程计算方阵的主对角线之和。其中方阵的输入请在 Input 函数实现,计算主对角之和请在 Compute 函数实现,计算结果请在主函数打印, 且给定的方阵最大为 10x10,方阵实际大小请在主函数读入。Input 函数和 Compute 函数的函数原型如下:
c语言上机考试训练题库及答案
3000≤s 15%折扣
设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为:f=p*w*s*(1-d),请按照上述标准利用switch语句编写程序计算运费,并画出程序NS图。
#include <stdio.h>
int main()
{
if(i%2==0&&i%3==0&&i%7==0)
printf("%d\n",i);
}
}
26.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include<stdio.h>
main()
{
char ch;
int z=0,k=0,s=0,q=0;
while((ch=getchar())!='\n')
#include<stdio.h>
void main()
{int i,sum=0;
for(i=100;i<=996;i+=4)
if(i/10%10!=4)
sum+=i;
printf("和为:%d",sum);
}
15.输入一个字符串,统计该字符串的长度以及字母a出现的次数。
#include <stdio.h>
void main()
{int i,j=0;
char ch[ ]=" ";
printf("please input some characters\n");
gets(ch);
for (i=0;ch[i];i++)
一套简单的C语言上机试题及答案详解
C 语言上机模拟试题(附详细答案)1.程序填空题请补充main函数,该函数的功能是:从键盘输入一组字符串,以“*”结束输入,并显示出这个字符串。
例如,输入abcdefghi*,结果显示adcdefghi。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!#include <stdio.h>#include <windows.h>#define N 80main(){int i=-1,j=0;char str[N];system("cls");printf("\n Input a string \n");do{i++;/**********found**********/scanf(___1___);/**********found**********/}while(___2___);printf("\n**display the string** \n");while(j<i){/**********found**********/printf(___3___);j++;}}2.程序修改题下列给定程序中,函数fun()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。
请改正程序中的错误,使其能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <conio.h>#include <stdio.h>#include <windows.h>#define MAXLINE 20/**********found**********/fun(char *pstr[6]){int I, j;char *p;for(i=0;i<5;i++){for(j=i+1;j<6;j++)/**********found**********/{if(strcmp(*(pstr+i),pstr+j)>0){p=*(pstr+i);/**********found**********/*(pstr+i)=pstr+j;*(pstr+j)=p;}}}}main(){int I;char *pstr[6],str[6][MAXLINE];system("cls");for(i=0;i<6;i++) pstr[i]=str[i];printf("Enter 6 string(1 string at eachline):\n ");for(i=0;i<6;i++) scanf("%s",pstr[i]);fun(pstr);printf("The strings after sorting:\n ");for(i=0;i<6;i++)printf("%s\n",pstr[i]);}3.程序设计题学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。
C语言上机考试题参考答案
C语言上机考试题参考答案课本例题1.例4.10:由边长求三角形的面积#include<stdio.h>#include<math.h>void main(){float a,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%7.2f, b=%7.2f, c=%7.2f s=%7.2f\n",a,b,c,s);printf("area=%7.2f\n",area);}2.例5.3:符号函数#include<stdio.h>#include<math.h>void main(){int x,y;scanf("%d",&x);if(x<0) y=-1;elseif(x==0) y=0;else y=1;printf("x=%d,y=%d\n",x,y);}3.例5.4:改变字母的大小写#include<stdio.h>void main(){char ch;scanf("%c",&ch);ch=(ch>='A' && ch<='Z')?(ch+32):ch;printf("%c\n",ch);}4.例5.5:判断闰年#include<stdio.h>#include<math.h>void main(){int year;scanf("%d",&year);if((year%4==0 && year%100!=0)||(year%400==0)) printf("%d is 闰年");elseprintf("%d is not 闰年");}5 例6.6:求π的近似值#include<stdio.h>#include<math.h>void main(){int s;float n,t,pi;t=1;pi=0;n=1.0;s=1;while(fabs(t)>1e-6){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf("pi=%10.6\n",pi);}6 例7.2:Fibonacci数列#include<stdio.h>#include<math.h>void main(){int i;int f[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0) printf("\n");printf("%12d",f[i]);}printf("\n");}7 例7.3:起泡排序#include<stdio.h>#include<math.h>void main(){int a[10];int i,j,t;printf("input 10 numbers:\n"); for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(j=0;j<9;i++)for(i=0;i<9-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");}8 例7.4:矩阵转置#include<stdio.h>#include<math.h>void main(){int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=1;i++){for(j=0;j<=2;j++){printf("%5d",a[i][j]);b[i][j]=a[i][j];}printf("\n");}for(i=0;i<=2;i++){for(j=0;j<=1;j++)printf("%5d",b[i][j]);printf("\n");}}9 例7.5:求一组数中的最大或最小数#include<stdio.h>#include<math.h>void main(){int i,j,row=0,colum=0,max;int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf("max=%d,row=%d,colum=%d\n",max,row,colum);}10 例8.8:使用递归方法实现计算阶乘n!#include<stdio.h>#include<math.h>void main(){float fac(int n);int n;float y;scanf("%d",&n);y=fac(n);printf("%d!%10.0f\n",n,y);}float fac(int n){float f;if(n<0){printf("error");}elseif(n==0||n==1)f=1;elsef=fac(n-1)*n;return f;}1110.9:选择法排序#include<stdio.h>#include<math.h>void main(){void sort(int x[],int n);int *p,i,a[10];p=a;for(i=0;i<10;i++)scanf("%d",p++);p=a;sort(p,10);for(p=a,i=0;i<10;i++){printf("%d",*p);p++;}}void sort(int x[],int n){int i,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(x[j]>x[k]) k=j;if(k!=i){t=x[i];x[i]=x[k];x[k]=t;}}}12 习题4.9:华氏度转摄氏度#include <stdio.h>void main(){float c, f;printf("请输入一个华氏温度:");scanf("%f", &f);c=5*(f-32)/9;printf("对应的摄氏温度为:%.2f\n", c); }13题5.4:输出三个数中的最大者#include<stdio.h>#include<math.h>void main(){int a,b,c,max;scanf("%d%d%d",&a,&b,&c);max=a;if(max<b) max=b;if(max<c) max=c;printf("max=%d\n",max);}14习题5.6:成绩分数转为成绩等级(if-else和switch两种方法)方法一#include <stdio.h>void main(){float grade = 0.0;printf("请输入一个百分制成绩:");scanf("%f", &grade);if(grade>=90.0 && grade<=100.0)printf("成绩等级为:A\n");else if(grade>=80.0 && grade<90.0)printf("成绩等级为:B\n");else if(grade>=70.0 && grade<80.0)printf("成绩等级为:C\n");else if(grade>=60.0 && grade<70.0)printf("成绩等级为:D\n");else if(grade>=0.0 && grade<60.0)printf("成绩等级为:E\n");elseprintf("输入有误!请输入百分制成绩!\n");return 0;}方法二#include <stdio.h>void main(){float grade = 0.0;int t = 0;printf("请输入一个百分制成绩:");scanf("%f", &grade);if(grade>=0.0 && grade<=100.0){t = (int)grade/10;switch(t){case 10:case 9: printf("成绩等级为:A\n"); break;case 8: printf("成绩等级为:B\n"); break;case 7: printf("成绩等级为:C\n"); break;case 6: printf("成绩等级为:D\n"); break;case 5:case 4:case 3:case 2:case 1:case 0: printf("成绩等级为:E\n"); break;}}elseprintf("输入有误!请输入百分制成绩!\n"); }15习题5.7:拆分整数#include <stdio.h>void main(){int num;printf("请输入一个不多于5位的正整数:");scanf("%d", &num);if(num<=0 || num>=100000){printf("输入有误!");}else{if(num>=10000)printf("您输入的是5位数。
C语言上机练习参考答案
第1章 C语言概述1-1编写程序,在屏幕上显示一个如下输出:1-2---------------------------------1-3Programming in C is fun!1-4I love C language.1-5---------------------------------1-6编写程序,在屏幕上显示一个如下图案:1-7* * * *1-8* * *1-9* *1-10*1-11已知某个圆的半径,编写一个程序,用来计算并显示面积。
1-12要求:将π定义为符号常量,并假设一个恰当的半径值。
OutputThe area of circle is: 78.50 1-13已知两个整数20和10,编写程序,自定义函数add( )将这两个数相加,自定义函数sub( )计算这两个数的差,并按照下面形式显示计算结果: 1-1420+10=30 1-1520-10=10Output20 + 10 = 30 20 – 10 = 10 1-16 已知变量a 、b 和c 的值,编写程序,用来计算并显示x 的值,其中cb a -=x 1-17 请分别用以下数值运行该程序 1-18 (1)a=250,b=85,c=25 1-19(2)a=300,b=70,c=80Output (1)x = 4.17Output (2)x = -30.00第2章 常量、变量及数据类型 & 第3章 运算符和表达式3-1 编写程序,求华氏温度100o F 对应的摄氏温度。
计算公式如下: 3-29)32(5-⨯=f c 3-3 式中:c 表示摄氏温度,f 表示华氏温度。
(c 定义为实型,f 定义为整型)OutputCelsius degree (corresponding to 100 Fahrenheit) is: 37.78.3-4 一个物体从100m 的高空自由落下,编写程序,求它在前3s 内下落的垂直距离。
C语言上机作业试题5套含答案
第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。
程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。
例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。
例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。
(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。
)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。
方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。
例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。
⏹A说:不是我。
⏹B说:是C。
⏹C说:是D。
⏹D说:他乱说。
已知三个人说的是实话,一个人说的是谎话。
此刻要依照这些信息,找出做了好事的人。
VC语言上机试题及答案
C 语言上机考试题20套(试题)C 语言上机考试题(第一套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S 例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){…………}main() /*主函数 */{ clrscr();printf(″%f\n ″, fun(10));}2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几?3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。
C 语言上机考试题(第二套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S 例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){…………}main() /*主函数 */{ clrscr();printf(″%f\n″, fun(10));}2.回文数是指正读和反读都一样的自然数。
例如,8, 121, 5445这三个数都是回文数。
求:(1) [1,1000]之内既是回文数,又是素数的最大整数。
(2) [1,1000]以内既是回文数,又是素数的整数有多少个。
3. 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。
C语言上机程序设计题库及答案
C语言上机程序设计题库【程序设计】功能:根据整型形参m,计算如下公式的值:y=sin(m)*10。
【参考代码】double y=0;y=sin(m)*10;return(y);功能:若x、y为奇数,求x到y之间的奇数和;若x、y为偶数,则求x到y之间的偶数和。
【参考代码】int i,s=0;for(i=x;i<=y;i+=2)s=s+i;return s;功能:编写程序,实现矩阵(3行3列)的转置(即行列互换)【参考代码】int i,j,t;for(i=0; i < 3; i++)for(j=0; j < i; j++){ t=array[i][j];array[i][j]=array[j][i];array[j][i]=t; }功能:求一个四位数的各位数字的立方和。
【参考代码】int d,s=0;while (n>0){d=n%10;s+=d*d*d;n/=10;}return s;功能:请编一个函数void fun(int tt[M][N],int pp[N]), tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
【参考代码】int i,j;for(j=0;j<N;j++){pp[j]=tt[0][j];for(i=1;i<M;i++)if(tt[i][j]<pp[j])pp[j]=tt[i][j];}功能:求一组数中大于平均值的数的个数。
【参考代码】int i,k=0;float s=0,ave;for(i=0;i<n;i++)s+=a[i];ave=s/n;printf("%f ",ave);for(i=0;i<n;i++)if(a[i]>ave)k++;return k;题目:分别统计字符串中字母、数字、空格和其他字符出现的次数(字符长度小于80)。
C语言上机题及答案
//a 对 2 求余等于 0,则 a 为偶数,sum 则加 a //sum 则为 0~50 内的偶数之和
13. 编写一个程序,计算 1 至 50 之间的奇数之和。 #include<stdio.h> void main() { int a,sum=0; for(a=0;a<=50;a++) if(a%2!=0) sum=sum+a; printf("奇数和 sum=%d\n",sum); } 14. 将一个二维数组 a 的行和列元素互换,存到另一个二维数组 b 中。
C 语言程序设计上机题
1. 编写函数实现从键盘输入一个字符串,再将其逆序输出。 #include<stdio.h> //宏定义 #include<string.h> //调用 string 库函数 void main() { int i,n; char a[30]; //定义字符型数组 gets(a); //输入字符串 n=strlen(a); //调用 strlen 函数,测量字符串长度 for(i=n;i>=0;i--) //通过 for 循环倒序输出 printf("%c ",a[i]); printf("\n"); } 2. 编写函数求出 10!的值并输出。
void main() { float r,h,v; printf("请输入所求圆柱底面半径 r 和高 h:"); scanf("%f,%f",&r,&h); v=dy(r,h); printf("圆的面积为:%f \n",v); } 6. 编写子函数,用冒泡法对数组中 10 个整数按由小到大排序。(子函数形参用一维数组)。 //调用子函数,求出体积赋值给 v
C语言上机考试编程题以及答案
C语言上机考试编程题以及答案1、求1+2+3+……….+100。
(循环)答案#include<stdio.h>void main(){int i,sum=0;for(i=1;i<=100;i++)sum=sum+i;printf("%d",sum);}2、求1*2*3*……….*10。
(循环)答案void main(){int i=0,j=1;for (i=2;i<=10;i++){j*=i;}printf("%d",j);return 0;}3、输入三个数字,输出他们的最大值。
(if)答案#include<stdio.h>void main(){int a,b,c,d;scanf("%d,%d,%d",&a,&b,&c);d=max(a,b,c);printf("max=%d",d);getch();/*暂停看运行结果*/}int max(int x,int y,int z){int u;if(x>=y&&x>=z)u=x;else if(y>=x&&y>=z)u=y;elseu=z;return(u);4.用起泡法对十个数据排序(数组实现)答案#include<stdio.h>main ( ){ int i,j,t;static int a[10]={5,7,4,2,3,6,1,0,9,8};for(j=0;j<9;j++){ for(i=0;i<9-j;i++){ if(a>a){ t=a;a=a;a=t ;}}}for(i=0;i<10;i++)printf("%2d",a);}5、输入十个数字,逆序输出。
(数组实现)答案#include<stdio.h>main(){int a[10],i=0;for(i=0;i<=9;i++)scanf("%f",&a);printf("\n");for(i=9;i>=0;i--)printf("%f",a);}6输入两个数,交换他们的值并输出。
c语言上机100套答案
第一套给定程序的功能是调用fun函数建立班级通讯录。
通讯录中记录每位学生的编号、姓名和电话号码。
班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。
答案: 一、1、STYPE 2、FILE 3、fp二、1、把for(i=0;i<s1;i++)改成for(i=0;i<sl;i++)注意:就是s 后的原来是数字1,应该改成字母l2、把t[sl]=‟\0‟改成t[2*sl]=‟\0‟第二套给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用—1(独立一行)作为字符串输入结束的标志。
然后将文件的内容读出显示在屏幕上。
文件的读写分别由自定义函数ReadText和WriteText实现。
答案:一、1、*fw 2、str 3、str二、1、把void fun(long s,long t)改为void fun(long s,long* t)2、把sl=sl*100改为sl=sl*10第三套给定程序中,函数fun的功能是:将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。
答案:一、1、fp 2、fclose(fp)3、fname二、1、把for(i=j+1;i<n-1;i++)改成for(i=j+1;i<n;i++)2、把t=i;改成p=i;第四套给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。
在复制的过程中,把复制的内容输出到终端屏幕。
主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
答案:一、1、”r”2、fs 3、ft二、1、把if (d%2=0)改为if(d%2==0)2、把s\=10改为s/=10第五套给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。
c语言上机试题库及答案
c语言上机试题库及答案1. 题目一:字符串翻转要求:编写一个C语言程序,实现字符串的翻转功能。
```c#include <stdio.h>#include <string.h>void reverseString(char *str) {int len = strlen(str);char temp;for(int i = 0; i < len / 2; i++) {temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[100];printf("Enter a string: ");scanf("%s", str);reverseString(str);printf("Reversed string: %s\n", str);return 0;}```2. 题目二:计算数组中的最大值要求:编写一个C语言程序,计算并输出一个整数数组中的最大值。
```c#include <stdio.h>int findMax(int arr[], int size) {int max = arr[0];for(int i = 1; i < size; i++) {if(arr[i] > max) {max = arr[i];}}return max;}int main() {int arr[] = {10, 45, 23, 67, 89, 34};int size = sizeof(arr) / sizeof(arr[0]);int max = findMax(arr, size);printf("The maximum value in the array is: %d\n", max); return 0;}```3. 题目三:实现二分查找要求:编写一个C语言程序,实现一个二分查找算法,查找一个有序数组中是否存在目标值。
C语言程序设计上机习题与参考答案
C语言程序设计上机习题1、给出三角形的三边a、b、c,求三角形的面积〔应先判断a、b、c三边是否能构成一个三角形〕.2、某幼儿园只收2~6岁的小孩,2~3岁编入小班,4岁编入中班,5~6岁编入大班,编制程序实现每输入一个年龄,输出该编入什么班.3、编写程序,输入一个整数,判断它能否被3、5、7整除,并根据情况输出下列信息:〔1〕能同时被3、5、7整;〔2〕能同时被3、5、7中的两个数整除,并输出这两个数;〔3〕只能被3、5、7中的一个数整除;〔4〕不能被3、5、7中的任何一个数整除.4、请列出所有的个位数是6,且能被3整除的两位数.5、求1~500中能被5整除的数的倒数之和.6、编写程序,输入某门功课的若干个同学的成绩,以-1作为终值,计算平均成绩并输出.7、若口袋里放入12个球,3个红球,3个白的,6个黑的,从中任取8个,编写程序,列出所有可能的取法.8、编写一个程序,求2012!的末尾有多少个0?9、一个自然数平方的末几位与该数相同时,称该数为同构数.例如:252=625,则25为同构数.编程求出1~1000中的同构数.10、输入一个较大的整数,求小于该整数的最大5个素数.11、求下列数列的近似值:S=1-1/22+1/33-1/44+…〔-1〕n/n n.输入精度,当某一项的精度小于该值时停止计算.float fun<float esp>{ }void main<>{float esp;scanf<"%f",&esp>;printf<"%f\n",fun<esp>>;}12、编写一个函数change<int x,int r>,将十进制整数x转换成r<1<r<10>进制后输出.13、求1000以内的亲密数对.亲密数对的定义为:若整数a 的所有因子〔不包括本身〕之和为b,b的所有因子〔不包括b本身〕之和为a,且a和b不相等,则称a与b为亲密数对.int fun<int x>{ }void main<>{int n,a,b;for<n=1;n<1000;n++>{b=fun<n>;a=fun<b>if<a!=b&&a==n>printf<"\n%d,%d\n",a,b>;} }14、用递归法求下列问题的解:一对小兔,一个月后长成中兔,第二个月长成大兔,长成大兔,长成大兔后以后每个月生一对小兔.第20个月有多少对兔子?15、定义一个函数long f<char s[ ]>,函数功能是将字符串s<只由数字符组成>转换为一个整数,并作为函数的返回值.long f<char s[ ]>{ }void main<>{ char s[10];long int res;gets<s>;res=f<s>;printf<"%ld\n",res>; }16、自编一函数,其功能是求一维数组最大值的下标,最大值由主函数输出.int fun<float aa[ ],int n >{ }void main<>{float a[10];int k,max;for<k=0;k<10;k++>scanf<"%f’,a+k>;max=fun<a,10>;printf<"Max=%f\n",a[max]>; }17、编写一个函数fun<char s[ ],int n>,函数的功能是将字符串s循环左移n个字符.主函数输入一个字符串的一个整数.void fun<chaf s[ ],int n>{ }void main<>{char ss[255];int n;gets<ss>;printf<"Input data:\n">;scanf<"%d",&n>;fun<ss,n>;puts<ss>;}18、编写一个函数,其功能是将字符串中指定的字符删除.void fun<char *ss,char c>{ }void main<>{char s[255],ch;printf<"Input a string:\n">;gets<s>;printf<"Input a character:\n">;scanf<"%c",&ch>;fun<s,ch>;puts<s>;}19、完成下面的函数,函数的功能是将a数中大于平均值的数组元素存入b数组中,大求平均值的数据个数通过指针方式返回.void fun<int *a,int *b,int k,int *n>{ }void main<>{int a[10],b[10],kk,,sum;for<kk=0;kk<10;kk++>scanf<"%d",aa+k>;fun<a,b,10,&sum>;for<kk=0;kk<sum;kk++>printf<"%6d",*<b+kk>>;}20、从键盘输入一任意的字符串,编一函数,其功能是将该字符串的数字字符构成一个数据返回.例如:输入字符串为1dfk3d45,得到返回值为1345.void fun<char *s,long int *n>{ }void main<>{char s[20];long int d;gets<s>;fun<s,&d>;printf<"%ld\n",d>;}参考答案1.#include<stdio.h>#include<math.h>void main<>{float a=3,b=4,c=5,p=0,s=0;if<<a+b>c>&&<a+c>b>&&<b+c>a>>{p=0.5*<a+b+c>;s=sqrt<p*<p-a>*<p-b>*<p-c>>;printf<"面积是%f\n",s>;}else printf<"不能构成三角形\n">;}2.#include<stdio.h>#include<math.h>void main<>{int age;printf<"请输入年龄:">;scanf<"%d",&age>;if<age>=2&&age<=6>if<age<=3>printf<"编入小班\n">;elseif<age<=5>printf<"编入中班\n">;elseprintf<"编入大班\n">;elseprintf<"您的输入有误!\n">;}3.〔1〕#include<stdio.h>void main<>{int n;printf<"请输入数n:\n">;scanf<"%d",&n>;if<n%3==0&&n%5==0&&n%7==0>printf<"能同时被3,5,7整除">;}〔2〕#include <stdio.h>void main<>{int n;printf<"请输入数n:\n">;scanf<"%d",&n>;if<n%3==0&&n%5==0&&n%7!=0> printf<"能同时被3,5整除\n">;if<n%3==0&&n%5!=0&&n%7==0> printf<"能同时被3,7整除\n">;if<n%3!=0&&n%5==0&&n%7==0> printf<"能同时被5,7整除\n">; }<3>#include <stdio.h>void main<>{int n;printf<"请输入数n: ">;scanf<"%d",&n>;if<n%3==0&&n%5!=0&&n%7!=0> printf<"只能被3整除\n">;if<n%3!=0&&n%5==0&&n%7!=0> printf<"只能被5整除\n">;if<n%3!=0&&n%5!=0&&n%7==0> printf<"只能被7整除\n">;}<4>#include <stdio.h>void main<>{int n;printf<"请输入数n: ">;scanf<"%d",&n>;if<n%3!=0&&n%5!=0&&n%7!=0>printf<"不能被3、5、7中的任何一个数整除\n">;}4..#include <stdio.h>void main<>{int i;for<i=1;i<100;i++>{if<i%10 == 6 && i%3 == 0>printf<" %d",i>;}printf<"\n">;}5.#include <stdio.h>void main<>{float sum = 0;for<int i=1;i<=500;i++>{if<i%5 == 0>sum+=<1.0/i>;}printf<"sum=%f\n",sum>;}6.#include <stdio.h>void main<>{int n=0;float s=0,sum=0;printf<"请输入若干学生成绩<输入-1结束>:">;while<s!=-1>{sum+=s;scanf<"%f",&s>;n++;} sum=sum/<n-1>;printf<"该课程的平均成绩是:%5.2f\n",sum>;}7.#include <stdio.h>void main<>{int Red,White,Black;int Count=0;for <Red=0;Red<=3;Red++>for<White=0;White<=3;White++>{Black=8-Red-White;if <Black>=0 && Black<=6>printf<"%2d. %d个红球,%d个白球,%d个黑球\n",++Count,Red,White,Black>;}printf<"\n共有%d种!\n\n",Count>;}8.<这道题目就是看可以分解成多少个5相乘的数>#include <stdio.h>int main<>{int result=0;for<int i=1; i<=2012; ++i>for<int n=i; n%5==0; n/=5>++result;printf<"%d\n",result>;return 0;}9.#include <stdio.h>void main<>{long i,j,k;k=10;for<i=1;i<=1000;i++>{if<i==k>{k*=10;}j=i*i;if<j%k==i>{printf<"%ld\t%ld\n",i,j>;}}}10.#include <stdio.h>void main<>{int n,count=0;printf<"请输入一个整数n:">;scanf<"%d",&n>;for<int i=n; i>=2; i-->for<int t=2; t*t<=i; t++>{if<i%t==0>break;else{count++;if<count<=5>printf<"%d\t",i>;break;}}printf<"\n">;}11.#include <stdio.h>#include<math.h>float fun<float esp>{int n=0;float s=0;do{n++;s+=pow<-1,n-1>*1.0/pow<n,n>;}while<1.0/pow<n,n>>esp>;return s;}void main<>{float esp;scanf<"%f",&esp>;printf<"%f\n",fun<esp>>;}12.#include<stdio.h>void change<int x,int r>{int a[32],i;for<i=0;x!=0;i++>{a[i]=x%r;x/=r;}for<i--;i>=0;i-->printf<"%d",a[i]>;printf<"\n">;}void main<>{int x,r;printf<"请输入x和r:">;scanf<"%d%d",&x,&r>;change<x,r>;}13.#include <stdio.h>int fun<int x>{int y=0;for<int i=1;i<x;i++>{if<x%i==0>y+=i;}return y;}void main<>{int n,a,b;for<n=1;n<1000;n++>{b=fun<n>;a=fun<b>;if<a!=b&&a==n>printf<"%d %d\n",a,b>;}}14.#include <stdio.h>int func<int n>{if<n==1||n==0>return 1;else return 2*func<n-1>+func<n-2>; }void main<>{printf<"%d\n",func<20>>;}15.#include <stdio.h>#include<math.h>long f<char s[ ]>{ long t=0;for<int i=0;i<10;i++>{t+=<s[i]-48>*pow<10,9-i>;}return t;}void main<>{ char s[10];long int res;gets<s>;res=f<s>;printf<"%ld\n",res>;}16.#include <stdio.h>int fun<float aa[],int n >{ int max=0;for<int i=0;i<10;i++>if<aa[i]>=aa[max]>max=i;return max;}void main<>{float a[10];int k,max;for<k=0;k<10;k++>scanf<"%f",&a[k]>;max=fun<a,10>;printf<"Max=%f\n",a[max]>; }17.#include <stdio.h>#include <string.h>void fun<char s[ ],int n> {char a[200]="";memcpy<a,s,n>;strcat<strcpy<s,s+n>,a>; }void main<>{char ss[255];int n;gets<ss>;printf<"Input data:\n">;scanf<"%d",&n>;fun<ss,n>;puts<ss>;}18.#include <stdio.h>void fun<char *ss,char c>{int i,j;for<i=0;ss[i]!=0;i++>{if<ss[i]==c>for<j=i;ss[j]!=0;j++>ss[j]=ss[j+1];}}void main<>{char s[255],ch;printf<"Input a string:\n">;gets<s>;printf<"Input a character:\n">;scanf<"%c",&ch>;fun<s,ch>;puts<s>;}19.#include<stdio.h>void fun<int *a,int *b,int k,int *n> {float sum=0,avg=0;int i,j=0;for<i=0;i<k;i++>sum+=*<a+i>;avg=sum/k;for<i=0;i<k;i++>{if<a[i]>avg>{b[j]=a[i];j++;}}*n=j;}void main<>{ int a[10],b[10],kk,sum;for<kk=0;kk<10;kk++>scanf<"%d",&a[kk]>;fun<a,b,10,&sum>;for<kk=0;kk<sum;kk++>printf<"%6d",*<b+kk>>;}20.#include <stdio.h>#include<math.h>void fun<char *s,long int *n> {long int t=0;int count=0,i;int a;for<i=0;i<20;i++>{if<s[i]>=48&&s[i]<=57>{count++;}}for<i=0;i<20;i++>{if<s[i]>='0'&&s[i]<='9'>{ count--;t=t+<s[i]-48>*pow<10,count>;}}*n=t;}void main<>{ char s[20];long int d;gets<s>;fun<s,&d>;printf<"%ld\n",d>;}。
c 上机试题及答案
c 上机试题及答案第一部分:多项选择题1. 下面哪个选项是正确的?a) Ab) Bc) Cd) D答案:d) D2. 在计算机科学中,什么是“算法”?a) 一种计算机语言b) 一种软件程序c) 一种解决问题的方法或步骤d) 一种计算机硬件答案:c) 一种解决问题的方法或步骤3. 下面哪个选项是关于二进制的描述?a) 使用0和1进行计算的系统b) 使用10个数字进行计算的系统c) 使用英文字母进行计算的系统d) 使用负数进行计算的系统答案:a) 使用0和1进行计算的系统第二部分:填空题1. 在C语言中,用于在屏幕上输出文本的函数是______。
答案:printf2. 在计算机领域中,RAM代表______。
答案:Random Access Memory(随机存取存储器)3. 当一个程序在运行时遇到错误并突然停止时,我们称之为______。
答案:运行时错误(Runtime Error)第三部分:编程题编写一个C程序,计算并输出1到100之间所有奇数的和。
```c#include <stdio.h>int main(void) {int sum = 0;for (int i = 1; i <= 100; i += 2) {sum += i;}printf("1到100之间所有奇数的和为:%d\n", sum);return 0;}```答案:1到100之间所有奇数的和为:2500第四部分:简答题1. 请简要解释什么是“数据类型”,并举例说明。
答:数据类型是一种用于定义变量或表达式的特性,包括数据的范围、内存大小和操作。
例如,在C语言中,int是一种数据类型,用于定义整数类型的变量,如:```cint age = 25;```2. 请简要介绍一下C语言的特点。
答:C语言是一种通用、高级的编程语言,具有以下特点:- 结构简洁:C语言的语法相对简单,易于学习和理解。
- 高效性:C语言可以生成高效的机器代码,执行速度快。
c语言上机考试题及答案
c语言上机考试题及答案一、选择题(每题2分,共20分)1. 在C语言中,用于定义结构体的关键字是()。
A. structB. unionC. enumD. typedef答案:A2. 下列关于数组的描述中,正确的是()。
A. 数组必须初始化B. 数组的大小在编译时确定C. 数组可以赋值给另一个数组D. 数组可以作为函数的参数答案:B3. C语言中,用于文件操作的库函数存放在()。
A. stdio.hB. stdlib.hC. string.hD. math.h答案:A4. 下列选项中,不属于C语言标准输入输出函数的是()。
A. printfB. scanfC. getcharD. malloc5. 在C语言中,用于定义枚举类型的关键字是()。
A. enumB. structC. unionD. typedef答案:A6. C语言中,用于定义指针的关键字是()。
A. charB. intC. floatD. *答案:D7. 在C语言中,用于定义函数的关键字是()。
A. structB. voidC. intD. function答案:B8. 下列关于C语言中函数的描述中,错误的是()。
A. 函数可以没有返回值B. 函数可以有多个返回值C. 函数可以嵌套定义D. 函数可以递归调用答案:C9. 在C语言中,用于定义联合体的关键字是()。
B. unionC. enumD. typedef答案:B10. C语言中,用于定义宏的预处理命令是()。
A. #defineB. #includeC. #pragmaD. #if答案:A二、填空题(每题2分,共20分)1. 在C语言中,()运算符用于定义常量。
答案:#define2. C语言中,()函数用于将字符数组转换为字符串。
答案:strcpy3. 在C语言中,()运算符用于强制类型转换。
答案:(type)或(type)4. C语言中,()函数用于打开文件。
答案:fopen5. 在C语言中,()函数用于关闭文件。
(完整版)C语言上机练习题及答案
(完整版)C语言上机练习题及答案1输入三个整数x,y,z,把这三个数由小到大输出。
# includevoid main(){int x,y,z,a;scanf ("%d,%d,%d",&x,&y,&z);if(x>y) {a=x; x=y;y=a;}if(x>z) { a=x; x=z; z=a;}if(y>z) {a=y; y=z; z=a;}printf("%d,%d,%d\n",x,y,z);}2输入圆的半径,输出圆的周长和面积。
# include# define PI 3.1415926# define S ==PI*r*r# define V (4.0/3)*PI*r*r*rvoid main(){double r;printf("please input r:");scanf("%lf",&r);printf("area is %.4lf\n",S);printf("volume is %.4lf\n",V);}输入正方形的边长,输出正方形的周长和面积。
# includevoid main(){float c,zc,mj;printf("输入你的正方形");scanf("%f\n",&c);zc=4*c;mj=c*c;printf("周长%f,面积%f,边长%f",zc,mj,c);}3用格式输入函数输入3个字符,并用输出函数反向输出3个字符和他们的ASCII 码。
# includeint main(){char-ch1,ch2,ch3;printf("please input three characters:\n");scanf("%C%C%c",&ch1,&ch2,&ch3);printf("%c\n%d\n",ch3,ch3);printf("%c\n%d\n",ch2,ch2);printf("%c\n%d\n",ch1,ch1);}输入一个摄氏温度,要求输出华氏温度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
scanf("%d%d", &m, &n);
/*---------*/
printf("count=%d, sum=%d\n", count, sum);
}
}
40031程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一行字符,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。
例:括号内是说明
输入
2 (repeat=2)
Reold building room 123
Programming is fun
输出
4
3
#include <stdio.h>
int main( )
{
int ri, repeat;
count=0, sum=0 (14到16之间没有素数)
#include "stdio.h"
#include "math.h"
int main( )
{
int ri,repeat;
int count, digit, i, j, k, m, n, sum;
scanf("%d",&repeat);
3 (repeat=2)
1 10 (m=1, n=10)
20 35 (m=20, n=35)
14 16 (m=14, n=16)
输出:
count=4, sum=17 (1到10之间有4个素数:2,3,5,7)
count=3, sum=83 (20到35之间有3个素数:23, 29, 31)
int main( )
{
int ri,repeat;
int i,n;
double s;
double fact(int n);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
/*---------*/
printf("%0.4f\n",s);
else printf("NO\n");
}
}
/*---------*/
50005程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入2 个正整数m和n(1<=m,n<=500),统计并输出m 和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
要求定义并调用函数prime(m)判断m是否为素数。
例:括号内是说明
输入
4 (repeat=4)
1 2 9 17
输出
NO (1不是素数)
YES (2是素数)
NO (9不是素数)
YES (17是素数)
#include <stdio.h>
#include <math.h>
int prime(int m);
scanf("%d",&repeat);
例:括号内是说明
输入:
3 (repeat=3)
-21902
2
345543
输出:
count=2 (-21902中有2个2)
count=1 (有1个2)
count=0 (345543中没有2)
#include "stdio.h"
int main( )
{
int ri,repeat;
int main( )
{
int ri, repeat;
int flag,n;
int prime(int m);
scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
scanf("%d", &n);
/*---------*/
if(flag) printf("YES\n");
8
#include <stdio.h>
int main( )
{
int ri, repeat;
int digit;
long in, temp, pow;
scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
scanf("%ld", &in);
/*---------*/
printf("\n");
}
}
40033程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
程序模拟简单运算器的工作:输入一个算式(没有空格),遇等号"="说明输入结束,输出结果。
假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。
}
}
/*---------*/
50003程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入1 个整数,统计并输出该数中2的个数。
要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。例如,countdigit(10090,0)的返回值是3。
for(ri=1; ri<=repeat; ri++){
scanf("%d", &op1);
operator = getchar();
/*---------*/
printf("%d\n", res);
}
}
50001程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个整数,从高位开始逐位输出它的各位数字。
输出语句:printf("%-2d", digit);
例:括号内是说明
输入
3 (repeat=3)
123456
-600
8
输出
1 2 3 4 5 6
6 0 0
输入1 个正整数n,计算 s 的前n项的和(保留 4 位小数)。
s = 1 + 1/2! +....+ 1/n!
要求定义并调用函数fact(n)计算n的阶乘。
例:括号内是说明
输入:
2 (repeat=2)
2 (n=2)
10 (n=10)
输出:
1.5000
1.7183
#include "stdio.h"
例:括号内是说明
输入
2 (repeat=2)
2 3 (a=2, n=3)
8 5 (a=8, n=5)
输出
246 (2+22+222)
98760 (8+88+888+8888+88888)
#include <stdio.h>
void main()
{
int riclude "stdio.h"
int main( )
{
int ri,repeat;
int i, digit, m, n, number, sum;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d", &m, &n);
输入:
2 (repeat=2)
2 (n=2)
10 (n=10)
输出:
1.5000
1.7183
#include "stdio.h"
int main( )
{
int ri,repeat;
int i,n;
float s,t;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
/*---------*/
printf("%0.4f\n",s);
}
}
40022程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算: