C语言上机题及答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a 1 2 3 4 5 6 1 4
//编写一个程序,计算 1 至 50 之间的奇数之和。
//a 对 2 求余不等于 0,则 a 为奇数,sum 则加 a //sum 则为 0~50 内的奇数之和
,b 2 5
3 6
#include<stdio.h> void main() {
int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2]; int i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) b[j][i]=a[i][j];
{ int t; t=*a;*a=*b;*b=t; } void main() { int a=100; int b=50; printf("交换前:\n"); printf("a=%d,a=%d\n",a,b); jh(&a,&b); printf("交换后:\n"); printf("a=%d,a=%d\n",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!的值并输出。
#include<stdio.h> void dy(int *a,int n) { int i,j,k,t; // i 为基准位置,j 为当前被扫描元素位置,k 用于暂存出现的较小的元素的位置 for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if ((*(a+j))<(*(a+k))) k=j ; } if(k!=i) { t=*(a+i); *(a+i)=*(a+k); *(a+k)=t; } } } void main() { int i; int a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); //输入一个整型数组 // 将此趟扫描得到的最小元素与基准互换位置 // k 始终指示出现的较小的元素的位置 //初始化为基准位置 // n 为数组元素个数
void main() { int a[3][3]={{1,2,3},{4,8,6},{9,7,3}};
dy(a); printf("max=%d,min=%d\n",max,min); }
//因为是全局变量, 所以直接可以输出, 不用函数返回值 // 输出 max 和 min
10. 编写一个函数,实现对a、b、c 3 个整数按大小顺序,在主函数输出排序后的结果。提示采用 指针作为参数。 #include<stdio.h> void jh(int *a,int *b,int *c) { int t; if(*a<*b) { t=*b; *b=*a; *a=t; } if(*a<*c) { t=*c; *c=*a; *a=t; } if(*b<*c) { t=*b; *b=*c; *c=t; } } //同上 //同上 //比较 a 与 b 的大小,若 a<b,则交换顺序
ห้องสมุดไป่ตู้
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
//定义并赋值一个两行三列的数组 a //定义一个三行两列的数组 b
//通过行列变换,将元素互换
for(i=0;i<3;i++) { for(j=0;j<2;j++) printf("%d ",b[i][j]); printf("\n"); 出一行,都自动换行 } }
//输出数列 b 的值
//这个 printf 必须在第一个 for 循环以内,才能每输
#include<stdio.h>
//宏定义
double dy(float r) {
//子函数
double pi=3.1415926; double s; s=pi*r*r; return s; }
//定义π的值
//求出面积 //函数返回值
void main() { float r; double s; printf("请输入所求圆半径 r:"); scanf("%f",&r); s=dy(r); printf("圆柱体积为:%f \n",s); } //输入半径值 //调用子函数,求出面积赋值给 s
#include<stdio.h> void dy(int *a,int t) { int i,j,h; for(i=0;i<t-1;i++)
//宏定义 //子函数
//两个 for 包含的内容就是冒泡法排序
for(j=0;j<t-1;j++) if((*(a+j))>=(*(a+j+1))) { h=*(a+j);*(a+j)=*(a+j+1);*(a+j+1)=h; } for(i=0;i<t;i++) printf("%d ",a[i]); printf("\n"); } //换行 //排序结束 //for 循环输出排序后的数组
//输出交换前的数值 //调用子函数,交换数值 //输出交换后的数字
9. 编写函数实现 3×3 数组的最大值与最小值查找,并在主函数中输出。提示采用全局变量。
#include<stdio.h> int i,j,max,min; void dy(int a[][3]) { max=a[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(max<a[i][j]) max=a[i][j]; min=a[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(min>a[i][j]) min=a[i][j]; } //同上,求出最小值,赋值给 min //二维数组,通过两个 for,求出最大值,赋值给 max //定义全局变量 //调用函数
#include<stdio.h>
//宏定义
float dy(int *a,int n) { float sum=0,p; int i; for(i=0;i<10;i++)
// 子函数,
//for 循环求数组和
sum=*(a+i)+sum; p=sum/10.0; return p; }
//
数组指针
15. 对于 3×3 的二维数组,可以在同一数组进行矩阵转置操作,即实现数组的行和列元素互换。
1 2 3 a 4 5 6 7 8 9 1 4 7
转置操作后为
a 2 5 8 3 6 9
#include<stdio.h> void main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; //定义并赋值 int i,j,t; for(i=0;i<3;i++) for(j=0;j<i;j++) { t=a[i][j];a[i][j]=a[j][i];a[j][i]=t; //将 a 数组,通过自己转置 } printf("转置后:\n"); for(i=0;i<3;i++) //输出转置后的数组 a { for(j=0;j<3;j++) printf("%5d",a[i][j]); printf("\n"); //这儿的 printf 只能在第一个 for 循环中,用于在每一行的开 头自动换行 } }
#include<stdio.h> void main() {
//宏定义
unsigned int a,num=1; for(a=1;a<=10;a++) num=num*a; printf("%d\n",num); } //输出所求值 //for 循环求出 10 的阶乘
3. 编写函数实现 10 个元素数组的平均值,并在主函数输出。
dy(a,10); for(i=0;i<10;i++) { printf("%d ",a[i]); } printf("\n"); } 12. 编写一个程序,计算 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); }
5. 编写函数实现圆柱体积计算,并在主函数输出结果。
#include<stdio.h>
//宏定义 //子函数
float dy(float r,float h) { float pi=3.1415926; float v; v=pi*r*r*h; return v; }
//定义π的值
//求出体积 //函数返回值
#include<stdio.h> void dy(int a[],int t) { int i,j,h; for(i=0;i<t-1;i++)
//宏定义 //子函数
//两个 for 包含的内容就是冒泡法排序
for(j=0;j<t-1;j++) if(a[j]>=a[j+1]) { h=a[j];a[j]=a[j+1];a[j+1]=h; } for(i=0;i<t;i++) printf("%d ",a[i]); //排序结束 //for 循环输出排序后的数组
printf("\n"); }
//换行
void main() { int a[10]={3,1,2,0,4,6,5,9,7,8}; dy(a,10); } 7. 编写子函数,用冒泡法对数组中 10 个整数按由小到大排序。(子函数形参用指针变量)。 //定义一个整数数组 //调用子函数,对数组排序并输出
// 求平均数 // 返回平均数 P 的值
void main() { int i,a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); printf("%f\n",dy(a,10)); } 4. 编写函数实现圆度面积计算,并在主函数中输出结果。 // 输出子函数返回的平均值 //for 循环输入数组的十个数字
void main() { int a[10]={3,1,2,0,4,6,5,9,7,8}; dy(a,10); } 8. 编写函数实现两个数据交换,要求采用指针作为函数参数实现。 #include<stdio.h> void jh(int *a,int *b) //定义一个整数数组 //调用子函数,对数组排序并输出
//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 中。
void main() { int a,b,c;
printf("请输入三个数:a,b,c\n"); scanf("%d,%d,%d",&a,&b,&c); jh(&a,&b,&c); printf("交换后的顺序为:\n"); printf("%d,%d,%d\n",a,b,c); } 11. 编写函数,用选择法对 10 个数排序,按由小到大输出。 (子函数形参用指针变量) 。 //输出交换后的值 //任意输入三个整数 //调用子函数,交换大小顺序
//编写一个程序,计算 1 至 50 之间的奇数之和。
//a 对 2 求余不等于 0,则 a 为奇数,sum 则加 a //sum 则为 0~50 内的奇数之和
,b 2 5
3 6
#include<stdio.h> void main() {
int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2]; int i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) b[j][i]=a[i][j];
{ int t; t=*a;*a=*b;*b=t; } void main() { int a=100; int b=50; printf("交换前:\n"); printf("a=%d,a=%d\n",a,b); jh(&a,&b); printf("交换后:\n"); printf("a=%d,a=%d\n",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!的值并输出。
#include<stdio.h> void dy(int *a,int n) { int i,j,k,t; // i 为基准位置,j 为当前被扫描元素位置,k 用于暂存出现的较小的元素的位置 for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if ((*(a+j))<(*(a+k))) k=j ; } if(k!=i) { t=*(a+i); *(a+i)=*(a+k); *(a+k)=t; } } } void main() { int i; int a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); //输入一个整型数组 // 将此趟扫描得到的最小元素与基准互换位置 // k 始终指示出现的较小的元素的位置 //初始化为基准位置 // n 为数组元素个数
void main() { int a[3][3]={{1,2,3},{4,8,6},{9,7,3}};
dy(a); printf("max=%d,min=%d\n",max,min); }
//因为是全局变量, 所以直接可以输出, 不用函数返回值 // 输出 max 和 min
10. 编写一个函数,实现对a、b、c 3 个整数按大小顺序,在主函数输出排序后的结果。提示采用 指针作为参数。 #include<stdio.h> void jh(int *a,int *b,int *c) { int t; if(*a<*b) { t=*b; *b=*a; *a=t; } if(*a<*c) { t=*c; *c=*a; *a=t; } if(*b<*c) { t=*b; *b=*c; *c=t; } } //同上 //同上 //比较 a 与 b 的大小,若 a<b,则交换顺序
ห้องสมุดไป่ตู้
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
//定义并赋值一个两行三列的数组 a //定义一个三行两列的数组 b
//通过行列变换,将元素互换
for(i=0;i<3;i++) { for(j=0;j<2;j++) printf("%d ",b[i][j]); printf("\n"); 出一行,都自动换行 } }
//输出数列 b 的值
//这个 printf 必须在第一个 for 循环以内,才能每输
#include<stdio.h>
//宏定义
double dy(float r) {
//子函数
double pi=3.1415926; double s; s=pi*r*r; return s; }
//定义π的值
//求出面积 //函数返回值
void main() { float r; double s; printf("请输入所求圆半径 r:"); scanf("%f",&r); s=dy(r); printf("圆柱体积为:%f \n",s); } //输入半径值 //调用子函数,求出面积赋值给 s
#include<stdio.h> void dy(int *a,int t) { int i,j,h; for(i=0;i<t-1;i++)
//宏定义 //子函数
//两个 for 包含的内容就是冒泡法排序
for(j=0;j<t-1;j++) if((*(a+j))>=(*(a+j+1))) { h=*(a+j);*(a+j)=*(a+j+1);*(a+j+1)=h; } for(i=0;i<t;i++) printf("%d ",a[i]); printf("\n"); } //换行 //排序结束 //for 循环输出排序后的数组
//输出交换前的数值 //调用子函数,交换数值 //输出交换后的数字
9. 编写函数实现 3×3 数组的最大值与最小值查找,并在主函数中输出。提示采用全局变量。
#include<stdio.h> int i,j,max,min; void dy(int a[][3]) { max=a[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(max<a[i][j]) max=a[i][j]; min=a[0][0]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(min>a[i][j]) min=a[i][j]; } //同上,求出最小值,赋值给 min //二维数组,通过两个 for,求出最大值,赋值给 max //定义全局变量 //调用函数
#include<stdio.h>
//宏定义
float dy(int *a,int n) { float sum=0,p; int i; for(i=0;i<10;i++)
// 子函数,
//for 循环求数组和
sum=*(a+i)+sum; p=sum/10.0; return p; }
//
数组指针
15. 对于 3×3 的二维数组,可以在同一数组进行矩阵转置操作,即实现数组的行和列元素互换。
1 2 3 a 4 5 6 7 8 9 1 4 7
转置操作后为
a 2 5 8 3 6 9
#include<stdio.h> void main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; //定义并赋值 int i,j,t; for(i=0;i<3;i++) for(j=0;j<i;j++) { t=a[i][j];a[i][j]=a[j][i];a[j][i]=t; //将 a 数组,通过自己转置 } printf("转置后:\n"); for(i=0;i<3;i++) //输出转置后的数组 a { for(j=0;j<3;j++) printf("%5d",a[i][j]); printf("\n"); //这儿的 printf 只能在第一个 for 循环中,用于在每一行的开 头自动换行 } }
#include<stdio.h> void main() {
//宏定义
unsigned int a,num=1; for(a=1;a<=10;a++) num=num*a; printf("%d\n",num); } //输出所求值 //for 循环求出 10 的阶乘
3. 编写函数实现 10 个元素数组的平均值,并在主函数输出。
dy(a,10); for(i=0;i<10;i++) { printf("%d ",a[i]); } printf("\n"); } 12. 编写一个程序,计算 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); }
5. 编写函数实现圆柱体积计算,并在主函数输出结果。
#include<stdio.h>
//宏定义 //子函数
float dy(float r,float h) { float pi=3.1415926; float v; v=pi*r*r*h; return v; }
//定义π的值
//求出体积 //函数返回值
#include<stdio.h> void dy(int a[],int t) { int i,j,h; for(i=0;i<t-1;i++)
//宏定义 //子函数
//两个 for 包含的内容就是冒泡法排序
for(j=0;j<t-1;j++) if(a[j]>=a[j+1]) { h=a[j];a[j]=a[j+1];a[j+1]=h; } for(i=0;i<t;i++) printf("%d ",a[i]); //排序结束 //for 循环输出排序后的数组
printf("\n"); }
//换行
void main() { int a[10]={3,1,2,0,4,6,5,9,7,8}; dy(a,10); } 7. 编写子函数,用冒泡法对数组中 10 个整数按由小到大排序。(子函数形参用指针变量)。 //定义一个整数数组 //调用子函数,对数组排序并输出
// 求平均数 // 返回平均数 P 的值
void main() { int i,a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); printf("%f\n",dy(a,10)); } 4. 编写函数实现圆度面积计算,并在主函数中输出结果。 // 输出子函数返回的平均值 //for 循环输入数组的十个数字
void main() { int a[10]={3,1,2,0,4,6,5,9,7,8}; dy(a,10); } 8. 编写函数实现两个数据交换,要求采用指针作为函数参数实现。 #include<stdio.h> void jh(int *a,int *b) //定义一个整数数组 //调用子函数,对数组排序并输出
//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 中。
void main() { int a,b,c;
printf("请输入三个数:a,b,c\n"); scanf("%d,%d,%d",&a,&b,&c); jh(&a,&b,&c); printf("交换后的顺序为:\n"); printf("%d,%d,%d\n",a,b,c); } 11. 编写函数,用选择法对 10 个数排序,按由小到大输出。 (子函数形参用指针变量) 。 //输出交换后的值 //任意输入三个整数 //调用子函数,交换大小顺序