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