天水地区建网站,小公司简介模板,域名没过期 网站打不开怎么办,深圳品牌网站建设公司招聘目录
一、程序填空#x1f4dd; --- 十进制转其他进制
题目#x1f4c3;
分析#x1f9d0;
二、程序修改#x1f6e0;️ --- 非素数求和
题目#x1f4c3;
分析#x1f9d0;
三、程序设计#x1f4bb; --- 重复数统计
题目#x1f4c3;
分析#x1f9d0; 前言…目录
一、程序填空 --- 十进制转其他进制
题目
分析
二、程序修改️ --- 非素数求和
题目
分析
三、程序设计 --- 重复数统计
题目
分析 前言 本文讲解十进制转其他进制、非素数求和、重复数统计 我的主页我的主页 系列专栏系列专栏 一、程序填空 --- 十进制转其他进制
难度⭐⭐
题目 函数 fun 的功能是将整数 m 转换成 n二十六进制数的字符串并通过函数值返回字符串首地址。 例输入125 16则输出7d 请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。 注意不得增行或删行也不得更改程序的结构 代码如下 在1️⃣2️⃣3️⃣处填空
#include stdio.h
#include string.h
char c[32];
char *fun(int m, int n)
{int i 0, j 0, a[32];char b[16] { 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f }, *p;do{a[i] m%n;/**********found**********/m 1️⃣;i;/**********found**********/} while (2️⃣);for (--i; i 0; --i){n a[i];/**********found**********/c[j] 3️⃣;}c[j] 0;p c;return p;
}void main()
{int m, n;char s[32];scanf(%d %d, m, n);strcpy(s, fun(m, n));printf(%s\n, s);
}分析
这里要注意第一个是十进制的值第二个值是转成对应的进制 例如题中给的例子就是让十进制125转成16进制 现在来逐个分析每一空最后一空是难点
填写m / n 因为由十进制转任意进制的原理可知 十进制模除对应进制取余数再反向输出即可 那么这个当前值就要更新为值 填写m ! 0 当值不为零时就继续取余填写b[n] 看到b数组就要想想他的作用是什么 很明显是用于将对应位数的字符取出来
解答代码如下
#include stdio.h
#include string.h
char c[32];
char *fun(int m, int n)
{int i 0, j 0, a[32];char b[16] { 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f }, *p;do{a[i] m%n;/**********found**********/m 1️⃣m / n;i;/**********found**********/} while (2️⃣m ! 0);for (--i; i 0; --i){n a[i];/**********found**********/c[j] 3️⃣b[n];}c[j] 0;p c;return p;
}void main()
{int m, n;char s[32];scanf(%d %d, m, n);strcpy(s, fun(m, n));printf(%s\n, s);
}二、程序修改️ --- 非素数求和
难度⭐
题目 函数 fun 的功能是求一维数组 a 中非素数之和 sum其结果 sum 通过函数返回。 例22,3,65,37,18,19,10,11,12,23,15,17则输出结果sum142 请改正程序中的错误使它能得出正确的结果。 注意不要改动 main 函数不得增行或删行也不得更改程序的结构 代码如下 在代码中找出3个错误并修改
#include stdio.hint fun(int a[], int n)
{int i, j, k, sum;sum 0;for (i 0; i n; i){k a[i] / 2;/**********found**********/for (j 2; j k; j){if (a[i] % j 0)/**********found**********/continue;}/**********found**********/if (j k)sum a[i];}return sum;
}
int main()
{int a[12] { 22,3,65,37,18,19,10,11,12,23,15,17 };printf(sum%d\n, fun(a, 12));return 0;
}分析
本题还是很容易理解的要掌握素数 素数只能被1或怎么整数的数字例如11
第11行的j k改成 j k 如果这里的k是要是a[i]的原值的话就不能有等于 因为如果是等于的话就是和自己整除 那么这里是将要测试的数字除2了那么就要等于第15行的continue;改成break; 因为如果能被除了1和自己以外的数整除就说明不是素数 所以就要打断第18行的if (j k)改成 if(j k) 因为根据题意这里是计算非素数的和 也就是通过break打断的不是正常结束的 所以条件就和11行判断循环的条件一样就可以了
解答代码如下
#include stdio.hint fun(int a[], int n)
{int i, j, k, sum;sum 0;for (i 0; i n; i){k a[i] / 2;/**********found**********/for (j 2; 1️⃣j k; j){if (a[i] % j 0)/**********found**********/2️⃣break;}/**********found**********/3️⃣if (j k)sum a[i];}return sum;
}
int main()
{int a[12] { 22,3,65,37,18,19,10,11,12,23,15,17 };printf(sum%d\n, fun(a, 12));return 0;
}三、程序设计 --- 重复数统计
难度⭐⭐⭐
题目 请编写函数 fun其功能是从一个整数数组中统计出有重复数字数的个数存于 m 中m 值由函数值返回。 例如2430, 3001, 1798, 199, 498, 277, 229, 851, 369, 1146 其中如3001 中有重复的数字 0 输出Total Num5 注意部分源程序在文件 PROG1.C 中。 请勿改动主函数 main 和其它函数中的任何内容仅在函数 fun 的花括号中填入你编写的若干语句。 代码如下 在fun函数中编写
#include stdio.h
#include string.hint fun(int a[], int n)
{}void main()
{int a[10]{2430,3001,1798,199,498,277,229,851,369,1146};int m;m fun(a, 10);printf(符合条件的数共有%d\n,m);getchar();
}
分析
由题意可知这里要统计一个数组中的一个整数里有重复数字的个数 可以这样
先在数组中取出一个数对这个数进行拆解放到新的数组b中再对这个这个b数组进行遍历看是否有相等的数字有的话就将其加1
解答代码如下
#include stdio.h
#include string.hint fun(int a[], int n)
{int i, j, k, flag, value 0, save 0;int b[10] {0};//一个循环取一个数for(i 0; i n; i){j 0;//将这个数中的每个数字//保存到数组b中while(a[i] ! 0){b[j] a[i] % 10;a[i] a[i] /10;}//判断这个数是否有重复的数for(k 0; k j; k){for(flag k1; flag j; flag){//如果有相等的数就给save赋1if(b[k] b[flag]){save 1;break;}}}//如果save为1则表示有重复的数就将其加一if(save 1){value;save 0;}}return value;
}void main()
{int a[10]{2430,3001,1798,199,498,277,229,851,369,1146};int m;m fun(a, 10);printf(符合条件的数共有%d\n,m);getchar();
}如果本文对您有帮助还希望点点关注呢这将是我不断前进的动力