教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 资格考试 >

C语言实验总答案(9)

来源:网络收集 时间:2026-05-14
导读: revnum = reverse(num); printf(\逆序后整数为:%d\\n\} 3、编写函数完成如下功能:将长整型数中数字为偶数的数依次取出,构成一个新数返回,例如,当s中的数为:87653142时,则返回的数为:8642。 提示:依次取出

revnum = reverse(num);

printf(\逆序后整数为:%d\\n\}

3、编写函数完成如下功能:将长整型数中数字为偶数的数依次取出,构成一个新数返回,例如,当s中的数为:87653142时,则返回的数为:8642。

提示:依次取出长整型数的每一位数字,如果是偶数,则放入新数中。在main函数中输入一个长整型数,调用该函数得到新的数,并输出结果。

#include \long func(long s); void main() {

long a;

printf(\请输入一个整数:\ scanf(\

printf(\}

long func(long n) {

long result=0;

int num, weight=1 ; // weight表示数位的权值(即个、十、百,。。。。)

while ( n != 0 ) {

num = n; //得到最低位 if (num % 2==0) {

result= num * weight + result; //重新组织成新的数 weight=weight * 10; }

n/=10; //去掉最低位 }

return (result); }

4、编写一个函数sort,实现数组元素的升序(或降序)排列。在main函数中输入数组元素,调用该函数进行排序,最后输出排序后的结果。

#include #define N 10

void sort(float a[], int n) //无返回值,在原数组上排序并带回 {

int i,j; float temp;

for(i=0;ia[j]) {

temp = a[i]; a[i] = a[j]; a[j] = temp; } }

void main(void) {

float a[N]; int i;

printf(\请输入%d个数值:\\n\ for(i=0;i

scanf(\

sort(a, N);

printf(\升序排序后的数组为:\\n\ for(i=0;i

printf(\ printf(”\\n”); }

5、编写函数求出二维整型数组中元素的最大值及其下标号。

提示:这里至少需要返回二维数组元素的行,列两个值,而函数只能返回1个值(无法返回2个值),所以只能通过数组作为参数的方法将值带回来。在main函数中输入一个二维整型数组,调用该函数得到最大值所在的下标,并输出最大值及其下标号。

#include

void max_value(int array[][4], int index[])

//没有返回值的函数,结果通过与index对应的数组带回

{

int i,j,max;

max=array[0][0]; for(i=0; i<3; i++) for(j=0; j<4; j++)

if(max < array[i][j]) {

index[0] = i; index[1] = j;

max = array[i][j]; } }

void main() {

int a[3][4]={{18,2,3,4}, {8,7,6,5},

{9,10,11,12}}; int maxindex[2]={0};

//定义数组maxindex以保存最大值的行、列下标,因为函数无法返回2个值,只能通过数组带回来

int i, j; max_value(a, maxindex); i=maxindex[0]; j=maxindex[1];

printf(\}

6、编写函数,统计给定字符串中各个字母出现的次数,不区分大小写。在main函数中输入一个字符串,调用该函数进行计算,然后输出统计结果。

提示:统计结果可以保存到一个数组中,如int count[26],分别存储每个字母出现的次数,初值0,然后将数组作为函数参数将值带回来。

#include \

void fun(char s[], int a[]) //将统计26个字母的结果存放在与数组a对应的实参中 {

int i, j;

for(i=0; s[i]; i++) {

if(s[i] >= 'A' && s[i] <= 'Z')

j = s[i]-'A'; //得到该字母在26个字母中的序号 else if(s[i] >= 'a' && s[i] <= 'z') j = s[i]-'a';

a[j]++; //对应字母的个数加1 } }

int main(void) {

char str[80];

int count[26]={0}, i; //count数组26个元素分别存储每个字母出现的次数,初值0

printf(\请输入一串字符以回车键结束:\\n\

gets(str);

fun(str, count);

//输出统计结果

for(i=0; i<26; i++) if(count[i]!=0) }

printf(\或%c出现的次数为:%d\\n\

7、编写函数substring(char [], char sub[]),查找sub串在字符串s中第一次出现的下标位置。 提示:若找到,函数返回对应下标,否则返回-1。例如s串为“abcdefg”,sub串为“def”,则返回值为4。在main函数中输入主串和子串,调用该函数并输出结果。

#include #include

int substring(char s[], char sub[])

//查找sub在s中第一次出现的位置,若找到返回对应下标,否则返回-1

{

int end, i, j;

end = strlen(s) - strlen(sub); /* 计算结束位置*/

if ( end > 0 ) /* 子串sub小于字符串s */ {

for ( i = 0; i <= end; i++ ) /* 用循环从首字符开始依次比较 */ {

for ( j = 0; sub[j]; j++ ) {

if(s[i+j] != sub[j]) break; }

if ( sub[j] == '\\0' ) /* 找到(即sub中所有字符都匹配),返回位置 */ return i + 1; } }

return -1; /*未找到,返回-1*/ }

void main(void) {

char string[100]; char substr[100]; int result;

printf(\请输入字符串: \

gets(string); /* 读取字符串*/ printf(\请输入要搜索的子字符串 ==> \

gets(substr); /* 读取子字符串*/

result = substring(string,substr); /* 定位子字符串*/

if ( result > 0 )

printf(\子字符串 %s 位置在 %d\\n\ else

printf(\没有找到子字符串 %s\\n\}

8、请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。函数的功能是:删除所有值为y的元素。已在主函数中给数组元素赋值,y的值由主函数通过键盘读入。注意:部分源程序已给出,请勿改动主函数和其他函数中的内容,仅在函数fun的指定的部位填入你编写的若干语句。

源程序如下:

#include #define M 20

int fun(int bb[],int n, int y) {

int i,j;

for(i=0;i

if(bb[i]==y) //当某个元素等于y时,把i后的元素顺次往前挪动一个位置 {

for(j=i;j

return n; }

void main() { int aa[M]={1,2,3,3,2,1,1,2,3,4,5,4,3,2,1}, n=15, y, k; printf(\ for(k=0; k< …… 此处隐藏:1293字,全部文档内容请下载后查看。喜欢就下载吧 ……

C语言实验总答案(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/412690.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)