C语言常考编程题
更新时间:2023-06-10 14:26:01 阅读量: 实用文档 文档下载
下面这些题包含了C中常考的编程题,每道题都很经典,亲自手写测试通过的。
1:输入一个数组,然后放到两个数组中,偶数一个数组,奇数一个数组
int main()
{
int a[5],b[5],c[5];
int counta = 0; //这个程序最关键的就是这连个变量,可以知道数组的大小 int countb = 0;
for(int i = 0;i<5;i++)
{
scanf("%d",&a[i]);
if(a[i] % 2 == 0)
{
b[counta] = a[i];
counta++;
}
if(a[i] % 2 != 0)
{
c[countb] = a[i];
countb++;
}
}
for(int i = 0;i< counta;i++)
{
printf("%d",b[i]);
}
printf("\n");
for(int i = 0;i< countb;i++)
{
printf("%d",c[i]);
}
return 0;}
2:只输入数组中的奇数
int main()
{
int a[5];
for(int i = 0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(int i = 0;i< 5;i++)
{
if(a[i] % 2 != 0)
{
printf("%d ",a[i]);
}
else
{
continue;
}
}
return 0;
}
3:输入一个数,然后把这个数放到一个数组中
int main()
{
unsigned int a;
printf("input a number less than 65536\n");
scanf("%d",&a);//
int b[5];
b[0] = a / 10000;
printf("第一位为:%d\n",b[0]);
b[1] = (a - b[0] * 10000) / 1000;
printf("第二位为:%d\n",b[1]);
b[2] = (a - b[0] * 10000 - b[1] * 1000) / 100;
printf("第三位为:%d\n",b[2]);
b[3] = (a - b[0] * 10000 - b[1] * 1000 - b[2] * 100) / 10;
printf("第四位为:%d\n",b[3]);
b[4] = a - b[0] * 10000 - b[1] * 1000 - b[2] * 100 - b[3] * 10;
printf("第五位为:%d\n",b[4]);
return 0;
}
4:输入一个字符串,然后返回一个整数,就是返回所有的ascll码
#include <string.h>
#include <stdio.h>
int main()
{
char* p = "abcd";
int b = strlen(p);
printf("the length is:%d\n",b);
int a[20];
int i = 0;
while(*p != '\0')
{
a[i] = (int)*p;
i++;
p++;
}
for(int i = 0;i< b;i++)
{
printf("%d",a[i]);
}
return 0;
}
注意:strcat,strcmp,strlen,strcpy 都是在#include <string.h>这个包中,而且参数为char的指针或者数组都可以。
5:文件读写实验
#include<stdlib.h>
#include <stdio.h>
int main()
{
char* ch1 = "china";
FILE* fp;
fp= fopen("file1.txt", "w");
fprintf(fp, "%s", ch1);//比如fprintf(fp, "%s %d %f\n", s, a, f);
fclose(fp);
fp = fopen("file1.txt", "r");
char ch = fgetc(fp);
while (ch != EOF)
{
putchar(ch);
ch = fgetc(fp);
}
return 0;
}
注意:FILE在#include<stdlib.h>这个头文件之中
4:随机数
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
int a = random(100);
printf("%d",a);
return 0;
}
注意:time(NULL)在time.h中。random(100)在<stdlib.h>中,所以这两个头文件一个都不能少
5:数组做形参
void swap(int a[],int n)//数组做形参是,对数组的任何操作都会是永久性的。引文a[]可以看做是一个指针
{
a[0] = 3;
a[1] = 4;
}
int main()
{
int a[] = {1,2};
swap(a,2);
printf("%d,%d",a[0],a[1]);
return 0;
}
6: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:
int fun(int score[],int m,int below[])//对数组的修改是永久性的,因为传递个数据过来,就是传递了个指针过来!
{
int i,k=0,aver=0;
for(i=0;i<m;i++)
aver+=score[i];
aver/=m;
for(i=0;i<m;i++)
if(score[i]<aver)
{
below[k]=score[i];
k++;//这里的k用的很巧妙。
}
return k;
}
7:找出数组中能被2整除的数,并放到另外一个数组中,并显示出所有的这些数
void fun(int *a, int *n,int *b)
{
int i,j=0;
for(i=0;i<10;i++)
{
if (*a%2==0)
{
*b = *a;//把数组当做指针来处理
j++;
b++;
}
a++;
}
*n = j;//通过行参返回数组b的大小而已
}
int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int b[10] = {0};
int n = 10;
fun(a,&n,b);//这里返回的是n,即数组b的大小;
//其实调用的函数是指针的话,我们可以向里边传入数组的。
for(int i = 0;i<n;i++)
{
printf("%d ",b[i]);
}
return 0;
}
统计在ch字符中"a"到"z"26各字母各自出现的次数,并依次放在a所指的数组中。
void fun(char *ch, int a[])
{
while(*ch != '\0')
{
switch(*ch)
{
case 'a': //a是字符,所以要用‘’符号,而且冒号必须在最后面
a[0] ++;
break;//千万别忘记了,这里的break。
case 'b':
a[1] ++;
break;
case 'c':
a[2] ++;
break;
case 'd':
a[3] ++;
break;
a[4] ++;
break;
case 'f':
a[5] ++;
break;
case'g':
a[6] ++;
break;
case 'h':
a[7] ++;
break;
case 'i':
a[8] ++;
break;
case 'k':
a[10] ++;
break;
case 'l':
a[11] ++;
break;
case 'm':
a[12] ++;
break;
case 'n':
a[13] ++;
break;
case 'o':
a[14] ++;
break;
case 'p':
a[15] ++;
break;
case 'q':
a[16] ++;
break;
case 's':
a[18] ++;
break;
case 't':
a[19] ++;
break;
a[20] ++;
break;
case 'v':
a[21] ++;
break;
case 'w':
a[22] ++;
break;
case 'x':
a[23] ++;
break;
case 'y':
a[24] ++;
break;
case 'z':
a[25] ++;
break;
}
ch++;
}
}
int main()
{
int a[26] = {0};
char ch[] = "i love you china!";
fun(ch,a);
for(int i = 0;i<25;i++)
{
printf("a[%d] = %d ",i,a[i]);
}
return 0;
}
7: 第7题 请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。
答案:
void fun (int *s, int t, int *k)
{
int i, max;
max=*s;
for(i=0;i<t;i++)
if (*s>max)
{
max = *s;
s++;
*k = i; //*k是用来记录最大值得下表的
}
}
13: 第13题 请编写一个函数void fun(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。 答案:
void fun(int tt[M][N], int pp[N])
{
int i,j,min;
for(j=0;j<N;j++)
{
min = pp[0][j];//把每个列的第一个数默认为是最小的
for(i=0;i<M;i++)
{
if (tt[i][j]<min)
min=tt[i][j];
}
pp[j]=min;//把最下放到一个一维数组中。不用在用k表示数组的大小,这里已经知道了有j列,则肯定有k个最小的数
}
}
11:其实指针可以像和数组一样去访问它。
int main()
{
char *p = "china";
//fun(p);
printf("%c",p[2]);
return 0;
}
12:把一个字符串前后调换顺序
#include<string.h>
void fun(char * p)
{
int len = strlen(p);
printf("%d\n",len);
int i = len/2;
printf("%d\n",i);
for(int j = 0; j < i; j++)
{
int a = 0;
a = p[j]; //指针也可以像数组一样的去访问它。
p[j] = p[len-j-1];
p[len-j-1] = a;
//printf("p[%d] = %c",j,p[j]);
}
}
int main()
{
char *p = "china";
fun(p);
printf("%s",p); //%s可以一次性的把所有字符串输出
return 0;
}
13:删除字符串中的指定字符
void delete(char s[],char c)
{
//一定要牢记,数组和指针是可以相互转化的;
char *p;
p = s; //把数组转化为指针
int i = 0;
while(*p != '\0' )
{
if(*p != c)
{
s[i] = *p;
i++;
}
p++;//其实也就是当遇到c时,把c后面的一个字符复制到c这里来。
}
s[i] = '\0'; //最后一个地方为结束符,也许该结束符后来还有字符,但是printf遇到'\0'就不在输出
// printf("%s",s);
}
int main()
{
char * p = "chiiiiina";
delete(p,'i');
printf("%s",p);//其实此时数组中为 chna\0na.但是由于'\0'时不再输出,所以只显示chna return 0;
}
14:遍历形参中的数组的方法有两种
方法一:
void shuzu1(char s[])
{
char *p;
p = s; //把数组转化为指针
while(*p != '\0' )
{
p++;
}
}
方法二:
void shuzu2(char s[])
{
int len = strlen(s);
for(i = 0; i < len;i++)
{
}
}
15:请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。
这道题是一个返回指针的题
char *fun(char *s,char *t)
{
char *p,*t1=t,*s1=s;
int n=0;m=0;
while (*s1)
{
n++;
s1++;
}
while(*t1)
{
m++;
t1++;
}
if(n>=m)
p=s;
else
p=t;
return p;
}
正在阅读:
C语言常考编程题06-10
风力发电机组单元11-06
无损检测超声波检测二级(UT)试题库带答案 - 图文12-29
大学生领导力的培养09-23
第四章《光现象》基础知识测试06-02
财务管理习题集11-01
西南大学运输组织学离线作业04-29
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 语言
- 编程
- 常考