没有合适的资源?快使用搜索试试~ 我知道了~
C语言上机考试题+答案
需积分: 10 7 下载量 174 浏览量
2012-11-08
23:40:04
上传
评论 1
收藏 107KB DOC 举报
温馨提示
试读
23页
上机考试的一些小题目,如冒泡排序,插入排序,选择排序,字符串处理,文件加密,内附解答。
资源推荐
资源详情
资源评论
C 语言上机考试
A-1、从键盘输入 10 个整数,用冒泡法对这 10 个数排序(由小到大)后输出。
#include<stdio.h>
void main(){
int i,data[11];
void sort(int,int[]);
printf("please input 10 integers:");
for(i=1;i<=10;i++)
scanf("%d",&data[i]);
sort(10,data);
printf("The sorted number:");
for(i=1;i<=10;i++)
printf("%d ",data[i]);
}
void sort(int n,int array[]){
int i,j,p;
for(i=1;i<n;i++){
for(j=1;j<=n-i;j++)
if(array[j]>array[j+1]){
p=array[j];
array[j]=array[j+1];
array[j+1]=p;
}
}
}
A-2、从键盘输入 10 个整数,用插入法对这 10 个数排序(由小到大)后输出。
#include<stdio.h>
void sort(int n,int a[]){
int i,j,t;
for(i=1;i<=n;i++){
1
t=a[i];
for(j=i-1;j>=0&&a[j]>t;j--)
a[j+1]=a[j];
a[j+1]=t;
}
}
void main(){
int i,data[11];
printf("please input 10 integers:\n");
for(i=1;i<=10;i++)
scanf("%d",&data[i]);
sort(10,data);
printf("The sorted number:\n");
for(i=1;i<=10;i++)
printf("%d ",data[i]);
}
A-3、从键盘输入 10 个整数,用选择法对这 10 个数排序(由大到小)后输出。
#include<stdio.h>
void main(){
int i,j,post,t,data[11];
printf("please input 10 integers:\n");
for(i=1;i<=10;i++)
scanf("%d",&data[i]);
for(i=1;i<10;i++){
post=i;
for(j=i+1;j<=10;j++)
if(data[j]>data[post]) post=j;
if(post!=i){
t=data[post];
data[post]=data[i];
data[i]=t;
}
2
}
printf("The sorted numbers:\n");
for(i=1;i<=10;i++)
printf("%d ",data[i]);
}
A-4、对于一个自然数,如果该数的所有因子之和正好等于该数,则该数称为完数。统
计 1000 以内的完数个数。
#include<stdio.h>
void main(){
int x,i,s,count=0;
for(x=1;x<=1000;x++){
s=0;
for(i=1;i<x;i++){
if(x%i==0) s=s+i;
}
if(s==x){
count++;
printf("%d\n",x);
}
}
printf("count=%d\n",count);
}
A-5、编写一个主函数以及一个函数 merge。要求是:(1)函数 merge 对两个已是升序
的数组 a、b 进行归并,归并后的结果仍然是升序的,并将归并结果返回给主调函数。(2)
主函数:定义长度为 5 的数组 a,并升序初始化;定义长度为 8 的数组 b,并升序初始化;
调用 merge 函数对数组 a、b 进行归并后放在数组 c 中(c 的长度)=13)。
#include<stdio.h>
#define M 5
#define N 8
void merge(int x[],int *y,int *z){
int i=0,j=0,k=0;
while(i<M&&j<N)
3
if(x[i]<y[j]) z[k++]=x[i++];
else z[k++]=y[j++];
while(i<M)
z[k++]=x[i++];
while(j<N)
z[k++]=y[j++];
}
void main(){
int a[M]={0,1,4,7,8},b[N]={-5,-3,-2,3,6,9,23,90};
int *p=a,i,c[M+N];
printf("The original array a:\n\t");
for(i=0;i<M;i++)
printf("%d,",a[i]);
printf("\n");
printf("The original array b:\n\t");
for(i=0;i<N;i++)
printf("%d,",b[i]);
printf("\n");
merge(p,&b[0],c);
printf("The sorted array c:\n\t");
for(i=0;i<M+N;i++)
printf("%d,",c[i]);
printf("\n");
}
A-6、统计输入的一行字符中数字、空白和其他字符的个数。
#include<stdio.h>
void main(){
int digital=0,space=0,other=0;
char c;
printf("please input a string:\n");
while((c=getchar())!='\n'){
if(c>='0'&&c<='9') digital++;
4
else if(c==' ') space++;
else other++;
}
printf("digital=%d,space=%d,other=%d\n",digital,space,other);
}
A-7、输入一行字符,统计其中有多少个单词,单词之间用空格符分隔开。
#include<stdio.h>
void main(){
char c;
int flag=1,word=0;
printf("please input a string:\n");
while((c=getchar())!='\n'){
if(c==' ') flag=1;
else{
if(flag){
word++;
flag=0;
}
}
}
printf("word=%d\n",word);
}
A-8、从键盘输入一个 099999 之间的整数。
① 判断它是一个几位数;
② 将该数的各位数字按逆序输出。
#include<stdio.h>
void main(){
long num;
int count=0;
printf("please input an integer between 0 and 99999:\n");
scanf("%ld",&num);
do{
5
剩余22页未读,继续阅读
资源评论
asdfasdfasdfghj
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 电力场景设备漏油检测数据集VOC+YOLO格式338张1类别.7z
- 基于yolov8+pyqt5实现精美界面支持图片视频和摄像检测源码.zip
- 用C语言为母亲节献上一份特别的祝福.zip
- LCD1602液晶显示屏的深入探索与实用指南.zip
- 基于Matlab人脸肤色定理的教师人数统计+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab霍夫曼变换的表盘读数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab火灾烟雾检测源码带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的恶劣天气交通标志识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的霍夫曼变换的表盘示数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的车道线识别系统 +源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功