c题库

更新时间:2023-11-18 00:54:01 阅读量: 教育文库 文档下载

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

C语言程序设计题库

1. 根据圆柱体的半径和高,计算圆柱体的表面积和体积(结果精确到小数点后3位)。 程序要求:

(1)圆柱体的半径和高要求从键盘输入,数据输入时,应当显示提示字符串; (2)输出时要求有文字说明。 #define pi 3.1415926 #include main() { float r,h; //定义r为底面半径h为圆柱体高 float s,v; //定义s为圆柱表面积,v为圆柱体体积 printf(\请输入底面半径和高(米),中间以逗号分隔:\ scanf(\ s=2*pi*r*h+2*pi*r*r; //计算表面积 v=pi*r*r*h; //计算体积 printf(\表面积为%.3f(m2)\\n体积为%.3f(m3)\\n\}

2. 从键盘分别输入两个复数的实部和虚部,求它们的和、差、积、商并将结果在屏幕上输出。

#include \main() { float a,b,c,d,resultr,resulti; printf(\请输入第一个复数:\ scanf(\ printf(\请输入第二个复数:\ scanf(\ printf(\两复数之和为%.2f+%.2fi\\n\ //求和并输出 printf(\两复数之差为%.2f+%.2fi\\n\ //求差并输出 resultr=a*c-b*d; resulti=a*d+b*c; printf(\两复数之积为%.2f+%.2fi\\n\求积并输出 resultr=(a*c+b*d)/(c*c+d*d); resulti=(b*c-a*d)/(c*c+d*d); printf(\两复数之商为%.2f+%.2fi\\n\求商并输出 }

3. 输入一个实数,输出它的平方根值,如果输入数小于0,输出“输入数据错误”的提示。

#include \#include \main() {

float a,b,c; printf(\请输入任意正实数: \ scanf(\ if(a<0) printf(\输入数据错误\\n\ else { b=sqrt(a); c=-b; printf(\的平方根是%.2f和%.2f\\n\ } }

4. 输入三个字符后,请按各字符ASCII码从大到小的顺序输出这些字符。

#include \ main() {

char a,b,c,t;

printf(\请输入三个字符\a=getchar();// 输入字符串 b=getchar(); c=getchar();

// 比较第一个和第二个 if(a

t=a; a=b; b=t; // 完成交换, }

// 比较第一个和第三个 if(a

t=a; a=c; c=t; // 完成交换, }

// 比较第二个和第三个 if(b

t=b; b=c; c=t; // 完成交换, }

printf(\字符由大到小顺序是%c,%c,%c \ }

5. 任意输入三条边的长度,判断能否构成三角形?若能构成三角形,是等边三角形、等腰

三角形还是其它三角形?

#include \ main() {

float a,b,c,t;

printf(\请输入三个数:\\n\scanf(\

// 将边按从大到小顺序存放在a,b,c变量中 if(a

t=a; a=b; b=t; }

if(a

t=a; a=c; c=t; }

if(b

t=b; b=c; c=t; }

if(a

printf(\是其它三角形\\n\} else

printf(\不能构成三角形\\n\}

6. 假设用1,2,??7分别表示星期一、星期二、??星期日。现输入一个数字,输出对

应的星期几的英文单词。 main() {

int week;

printf(\请输入任意数值(1-7):\ scanf(\ switch(week)

{

case 1:printf(\ break; case 2:printf(\ break; case 3:printf(\ break; case 4:printf(\ break; case 5:printf(\ break; case 6:printf(\ break; case 7:printf(\ break; default:printf(\输入错误!\\n\ } }

7. 判断输入字符的类型

#include\main() { char c;

printf(\ c=getchar(); if(c<32) printf(\ else if(c>='0'&&c<='9') printf(\ else if(c>='A'&&c<='Z') printf(\ else if(c>='a'&&c<='z') printf(\ else printf(\}

8 . 1862年,英国的天文学家哈雷发现一颗大慧星描绘的曲线和1531年,1607年的慧星惊人地相似,便大胆断定,这是同一天体的三次出现,并预言它将于76年后再度回归。这就是著名的哈雷慧星,它的回归周期大约是76年。请你编制程序,列出哈雷慧星在1607~3000年的回归时间表。

#include\main() { int year; for(year=1607;year<3000;year=year+76) { if(year<3000) printf(\ } printf(\}

9. 根据第五次全国人口普查的结果,截至2000年11月1日,北京市的常住人口总数为1381.9万。如果从2001年初开始,北京市把全市人中的年增长率控制在0.13%以内,到2008年举办奥运会时(按到年底计算),北京市最多有多少常住人口?同时请你按年输出每年的常住人口数。

#include\main() { float people; int year; people=1381.9; for(year=2001;year<2009;year++) { people*=1+0.0013; printf(\年,人口%.3f\\n\ } }

10. 若一个口袋中放有12个球,其中有3个红的,3个白的和6个黑的,问从中任取8个共

有多少种不同的颜色搭配? #include main() { int i,j,count=0; printf(\ 红球 白球 黑球\\n\ printf(\ for(i=0;i<=3;i++) for(j=0;j<=3;j++) if((8-j-i)<=6) printf(\ = =\\n\}

11. 在一次演讲比赛中,有10个评委为参赛的选手打分,按百分制计分,选手最后得分为

10个分数的平均分。

/*Example36.c 演讲比赛计分器 */ #include main() { int i=1; //循环计数器 float sum,score; //sum为总分,score为评委的评分 sum=0; while(i<=10) { printf(\请输入第%d个评委的评分\ scanf(\ //输入每个评委的评分

long sum=0; char s[N];

printf(\输入十六进制数:\

scanf(\ //输入的十六进制数存储为字符串 for(i=0;s[i];i++) //s[i]代表第i个字符 { if(s[i]<='9') //如果第i个字符为0-9的数值 t=s[i]-'0'; else //如果第i个字符为A-F的数值 t=s[i]-'A'+10; sum=sum*16+t; }

printf(\ }

33. 编写一个程序可以求出一个矩阵A的主对角线上元素之和。 程序代码:

#include #include #include #define N 4 void main() { int i,j,A[N][N],s=0;

srand(time(0)); //用一个随机值初始化随机数发生器 /* 使用随机数产生矩阵A */ for(i=0;i

printf(\矩阵A的对角线元素之和为:%d\\n\}

34. 通过键盘输入n名学生的基本信息,包括:学号、姓名、出生日期、性别、班级,查找并输出在给定日期以后过生日的同学信息。

#include #define NUM 3

typedef struct{ //定义日期结构体类型 int year; int month; int day; }DATE;

typedef struct{ //定义学生信息结构体类型 char num[6]; //学号 char name[24]; //姓名 DATE birthday; //出生日期 char sex; //性别 int clas; //班级 }STUDENTINF; void main() { STUDENTINF s[NUM]; //定义结构体类型数组s DATE d; //定义结构体类型变量d int i; printf(\请输入%d个学生信息(学号 姓名 出生日期 性别 班级):\\n\ for(i=0;i

s[i].name,s[i].birthday.year,s[i].birthday.month,s[i].birthday.day,s[i].sex,s[i].clas);

} printf(\请输入要查询的日期:\\n\ scanf(\ printf(\学号 姓名 出生日期 性别 班级\\n\ for(i=0;i

if(s[i].birthday.month>d.month) {

printf(\

s[i].birthday.year,s[i].birthday.month,s[i].birthday.day,s[i].sex,s[i].clas);

continue; }

//如果月份相等判断日是否大于输入日

if(s[i].birthday.month==d.month&&s[i].birthday.day>d.day) printf(\s[i].birthday.year,s[i].birthday.month,s[i].birthday.day,s[i].sex,s[i].clas);

} }

35. 设有如下3×5的矩阵:

328342387 9A?65119616请编写程序计算所有元素的平均值,并将大于平均值的元素输出。 #include

float average(int m,int n,int arr[]); //函数声明 main() { int a[3][5]={{3,2,8,34,2},{6,5,11,3,7},{9,6,16,8,9}}; //矩阵初始化 int i,j; int row=3,col=5; //矩阵的行,列数 float ave; //矩阵的平均值

ave=average(row,col,a[0]); //函数调用 printf(\ //输出平均值 printf(\ //提示信息 for(i=0;iave) printf(\ } }

float average(int m,int n,int arr[]) //函数定义 { int i; int total=0; float ave; for(i=0;i

36. 编程计算 “1K+2K+3K+??+nK”的值,其中K为整型常量,n为一自然数。

#include

#define K 4 //符合常量

#define N 6

powers(int m,int k) //定义指数函数,求m的k次方 {

int i,product=1; for(i=1;i<=k;i++)

product*=m; return(product); }

sum_of_powers(int k,int n) //定义求和函数 {

int i,sum=0;

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

sum+=powers(i,k); //调用powers函数,并求和 return (sum ); }

void main ( ) {

printf(\

printf (\ //调用求和函数sum_of_powers }

37. 有5个人坐在一起,问第五个人多少岁?他说比第4个人大两岁;问第4个人岁数,他说比第3个人大两岁;问第三个人,又说比第2人大两岁;问第2个人,说比第一个人大两岁;最后问第一个人,他说是10岁。请问第五个人多大?

#include

age(n) //递归函数定义 int n; { int c; if(n==1) c=10; //递归结束条件 else c=age(n-1)+2; return c; }

void main() { printf(\第5个人为:%d岁\\n\ }

38. 给定文本文件score.txt存储某班所有同学的期末成绩,成绩包括语文和数学两科,以下程序完成对给定同学成绩的查询,部分测试数据如表5-1所列。

表5-1 score.txt中的部分学生数据

学号 0001 0002 0003 姓名 张静静 李中华 王鹏飞 语文 86 74 78 数学 90 86 92 #include #include #include

struct studinfo //定义结构体 { char no[5]; //学号 char name[7]; //姓名 int s[2]; //成绩 };

void main() { FILE *fp; struct studinfo a; //声明结构体变量 char sno[5]; //计划查找的学生学号 printf(\请输入待查学生的学号:\ scanf(\ if((fp=fopen(\打开文本文件 { printf(\打开文件错误\\n\ exit(0); } printf(\ printf(\学号\\t姓名\\t语文\\t数学\\n\ while(!feof(fp)) { fscanf(fp,\ if (strcmp(sno,a.no)==0) //strcmp()字符串比较函数 printf(\ } fclose(fp); }

39. 以下程序的功能为求任意3个整数的绝对值的和,试阅读程序画出该程序的流程图。

#include

int abs_sum(int m,int n); //函数声明 main()

{ int x,y,z,sum; printf(\ scanf(\ printf(\ scanf(\ printf(\ scanf(\ sum=abs_sum(abs_sum(x,y),z); //函数调用 printf(\}

int abs_sum (int m,int n) //函数定义 { if(m<0) m=-m; if(n<0) n=-n; return m+n; }

40. 给定任意一行英文文本,统计文本中的单词个数,单词间以空格分隔。 #include

int word(char s[]) //定义统计字符串单词个数的函数 { int num=0,flag=0,i; for(i=0;s[i]!='\\0';i++)//循环结束条件 { if(s[i]==' ') flag=0; else if(flag==0) {flag=1; num++;} } return(num); }

void main() { int num; char s[81]; printf(\请输入要统计单词个数的字符串:\\n\ gets(s); num=word(s); printf(\字符串中包含的单词个数为:%d\\n\}

41. 任意输入10个整数,使用选择排序法按升序对其进行排序,并输出结果。

#include /*

* 功能:选择排序法

* 输入:数组名称、数组中元素个数 */

select_sort(int *x, int n) { int i, j, min, t; for (i=0; i

} }

void main() { int i,a[10]; printf(\ for(i=0;i<10;i++) //数组初始化 scanf(\ select_sort(a,10); //选择排序 printf(\ for(i=0;i<10;i++) //输出排序结果 printf(\printf(\ }

42. 任意输入10个整数,使用冒泡排序法按升序对其进行排序,并输出结果。

#include /*

* 功能:冒泡排序法

* 输入:数组名称、数组中元素个数 */

void bubble_sort(int *x, int n) { int i, j, t; for(i=n-1; i>0; i--) //控制冒泡次数 { for(j=0; j *(x+j+1)) { t = *(x+j); *(x+j) = *(x+j+1); *(x+j+1) = t; }

} }

min=i;

for(j=i+1; j

if (min!= i) //将查到的最小值元素与第i个元素交换位置 { t = *(x+i); *(x+i) = *(x+min);

*(x+min) = t; }

}

void main() { int i,a[10]; printf(\ for(i=0;i<10;i++) //数组初始化 scanf(\ bubble_sort(a,10); //冒泡排序 printf(\ for(i=0;i<10;i++) //输出排序结果 printf(\printf(\ }

43. 从键盘任意输入10个不同的整数存放在数组a中,查找关键字x是否在数组a中。

#include void main() { int a[10]; int x,i; printf(\输入数据到数组a中:\\n\ for(i=0;i<10;i++) scanf(\ printf(\输入待查找关键字x:\ scanf(\ for(i=0;i<10;i++) { if(x==a[i]) { printf(\关键字x在数组元素a[%d]中\\n\ break; } else if (i>9) printf(\没有匹配的关键字\\n\ } }

44. 按升序从键盘输入10个整数存入数组a中,查找关键字key是否在数组a中。

#include void main() { int a[10],mid,bot,top,x,i,find; printf(\输入数组a:\\n\ for(i=0;i<10;i++) scanf(\ printf(\输入待查找关键字x:\ scanf(\ bot=0;top=9;find=0;

}

while(botif (find==1) printf(\关键字在数组元素a[%d]中!\\n\ else printf(\没有找到此关键字!\\n\

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

Top