网站建设案例资料,网站建设实训结论,综合网站设计,宿州专业网站建设公司【C语言】字符串刷题篇在这里哦#xff01; 【C语言】字符串—刷题篇 【C】语言经典题目#xff0c;五个摘录为一篇#xff0c;将会持续更新啦#xff01;#x1f49e; C语言经典题目 三位数水仙花数完数求利润三个数数字排序 三位数
#x1f4ab;题目 已知有1、2、3、4… 【C语言】字符串刷题篇在这里哦 【C语言】字符串—刷题篇 【C】语言经典题目五个摘录为一篇将会持续更新啦 C语言经典题目 三位数水仙花数完数求利润三个数数字排序 三位数
题目 已知有1、2、3、4这几个数字能组成多少个互不相同且无重复数字的三位数都是多少 ✨分析 已知 1234这几个数字 组成三位数 互不相同 各位十位百位数字无重复 输出 有多少个 是多少 思路 用循环嵌套进行遍历表示三个数即百位数字 * 100十位数字 * 10各位数字。 但是要控制个位十位百位数字各不相同所以用if 语句判断如果各位不等于十位且不等于百位十位不等于百位就进行输出。 而输出要求先输出多少个最后才依次输出三位数。所以每一次循环可以把这个三位数放到数组中保存下来。最后输出。 对于有多少个符合if语句的用计数器计1。
#includestdio.h
int main (void)
{int array[100]{0};//数组初始化为0int count0,i0;int a,b,c;for (a1;a5;a)//百位for (b1;b5;b)//十位for(c1;c5;c)//个位if (a!b a!c b!c){array[i]a*100b*10c;i;count;}printf(这样的三位数有%d个\n,count);for (i0;icount;i)printf(%d ,array[i]);printf(\n);return 0;
}
水仙花数
题目 打印出所有的水仙花数所谓水仙花数是指一个三位数其各位数字立方和等于该数 本身。例如153是一个水仙花数因为1531的三次方5的三次方3的三次方。 ✨分析 利用循环对100~999进行遍历判断是不是完数是则输出。
#include stdio.h
int main (void)
{int i,a,b,c;for (i100;i1000;i){ci%10;//个位bi/10%10;//十位ai/100;//百位if (a*a*ab*b*bc*c*ci){printf(%d ,i);}}return 0;
}完数
题目 一个数如果恰好等于它的因子之和这个数就称为完数。例如6123编程找出1000以内的所有完数。 ✨分析 利用循环遍历1~1000 将它所有的因子求和 判断因子之后是否等于它本身是则输出。
#include stdio.h
int main (void)
{int i,k,sum;for (i2;i1000;i){sum0;//注意sum的初始化必须在循环内for (k1;ki;k)if (i%k0)sumk;if (sumi)printf(%d ,i);}return 0;printf(\n);
}
输出结果
6 28 496求利润
题目 企业发放的奖金根据利润提成 利润(I)低于或等于10万元时奖金可提10% 利润高于10万元低于20万元时低于10万元的部分按10%提成高于10万元的部分可提成7.5% 20万到40万之间时高于20万元的部分可提成5% 40万到60万之间时高于40万元的部分可提成3% 60万到100万之间时高于60万元的部分可提成1.5% 高于100万元时超过100万元的部分按1%提成。 已知 利润从键盘输入 输出 根据利润的范围计算提成并输出。 思路 可以用多分支选择语句即多个if
#includestdio.h
double f1(int n);
double f2(int n);
double f3(int n);
double f4(int n);
double f5(int n);
double f6(int n);
int main (void)
{int n;double m;printf(请输入利润\n);scanf(%d,n);if (n0 n 1e5)//用科学计数法表示比较简洁mf1(n);else if(n1e5 n2e5)mf2(n);else if (n2e5 n4e5)mf3(n);else if (n4e5 n6e5)mf4(n);else if (n6e5 n1e6)mf5(n);else if (n1e6)mf6(n);printf(%lf,m);return 0;
}
double f1(int n)
{return n*0.1;
}
double f2(int n) //低于10万的部分用f1()函数
{return f1(1e5)(n-1e5)*0.075;
}
double f3(int n) //低于20万的部分用f2()表示
{return f2(2e5)(n-2e5)*0.05;
}double f4(int n)
{return f3(4e5)(n-4e5)*0.03;}
double f5(int n)
{return f4(6e5)(n-6e5)*0.015;
}double f6(int n)
{return f5(1e6)(n-1e6)*0.01;
}三个数数字排序
题目 输入三个数x、y、z请把它们从小到大输出。 ✨分析 方法一 可以使用假定法排序思路就是假设x是最小的x和进行比较若y大于x则交换x和y的值使得x是x、y中最小的…… 方法二 方法二可以使用指针 对三个数完成排序。 方法三 使用三目运算符求得三个数中最大的和最小的然后用它们的和减去最大值最小值得到中间值。 代码实现 方法一
#include stdio.h
int main (void)
{int x,y,z,tmp;scanf(%d%d%d,x,y,z);if (yx){tmpx;xy;ytmp;}if(zx){tmpx;xz;ztmp;}if (zy){tmpy;yz;ztmp;}printf(%d %d %d\n,x,y,z);return 0;
}方法二
#include stdio.h
void fun(int*a,int*b,int*c);
int main (void)
{int x,y,z;int *ax,*by,*cz;//给指针a、b、c赋值地址值scanf(%d%d%d,x,y,z);fun (a,b,c);printf(%d %d %d\n,*a,*b,*c);return 0;
}
void fun(int*a,int*b,int*c)
{int tmp;if (*b*a){tmp*a;*a*b;*btmp;}if (*c*a){tmp*a;*a*c;*ctmp;}if (*c*b){tmp*b;*b*c;*ctmp;}
}▶️▶️在这里给大家补充一下错误的程序
#include stdio.h
void fun(int*a,int*b,int*c);
int main (void)
{int x,y,z;int *ax,*by,*cz;//给指针a、b、c赋值地址值scanf(%d%d%d,x,y,z);fun (a,b,c);printf(%d %d %d\n,*a,*b,*c);return 0;
}
void fun(int*a,int*b,int*c)
{int *tmp;if (*b*a){tmpa;ab;btmp;}if (*c*a){tmpa;ac;ctmp;}if (*c*b){tmpb;bc;ctmp;}
}在这个程序中并不会实现将x、y、z三个数中按照从小到大的顺序进行输出。 这是因为当主函数把程序的执行控制权交给被调函数fun()时将实参*a,*b,*c传给实参变量。若 *a*b,则交换a和b的值使得a指向yb指向x。但此时并不会改变x和y的值当函数调用结束后释放a与b的内存空间将程序执行的控制权交给主调函数所以并不能改变主函数中变量x、y、z的值。 方法三
#include stdio.h
int main (void)
{int x,y,z;int min,mid,max,sum;scanf(%d%d%d,x,y,z);sumxyz;max(xy?x:y)z?(xy?x:y):z;min(xy?x:y)z?(xy?x:y):z;midsum-min-max;printf(%d %d %d\n,min,mid,max);return 0;
}感谢小伙伴的阅读有错误的地方欢迎指出交流呀