有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。
利用递归函数调用方式,将所输入的字符串,以相反顺序打印出来。
菲波那切数列:指的是这样一个数列:1、1、2、3、5、8、13、21、34、……这个数列从第3项开始,每一项都等于前两项之和。
int fib(int n){
if(n<=2)
return 1;
else
return fib(n-1)+fib(n-2);
}
int main(){
int i=0;
int ret=0;
scanf("%d",&i);
ret=fib(i);
printf("ret=%d",ret);
return 0;
}
给定两个数,求这两个数的最大公约数
int main(){
int m=0;
int n=0;
int r=0;
scanf("%d %d",&m,&n);
while(r=m%n){
m=n;
n=r;
}
printf("%dn",n);
return 0;
}
三个数从大到小输出
int main(){
int a=0;
int b=0;
int c=0;
scanf("%d%d%d",&a,&b,&c);
//算法实现:a中放最大值 b次之 c中放最小值
if(a<b){
int tmp=a;
a=b;
b=tmp;
}
if(a<c){
int tmp=a;
a=c;
c=tmp;
}
if (b<c){
int tmp=b;
b=c;
c=tmp;
}
printf("%d %d %dn",a,b,c);
return 0;
}
模拟用户登陆情况,且只能输如三次
int main(){
int i=0;
char password[20]={0};
for(i=0;i<3;i++){
printf("请输入密码:>");
scanf("%s",password);
if(strcmp(password,123456)==0){ //==不能用来比较两个字符串是否相等,应该使用一个库函数--strcmp
printf("登陆成功n");
break;
}else{
printf("密码错误n");
}
}
if(i==3)
printf("三次密码错误,退出程序n");
return 0;
采用二分法查找数组中的指定元素
int main(){
int arr[]={1,2,3,4,5,6,7,8,9,10};
int k=7;
int sz=sizeof(arr)/sizeof(arr[0]); //计算元素个数
int left=0; //左下标
int right=sz-1; //右下标
while(left<=right){
int mid=(left+right)/2;
if(arr[mid]>k){
right=mid-1;
}
else if(arr[mid]<k){
left=mid+1;
}
else{
printf("找到了,下标是:%dn",mid);
break;
}
}
if(left>right){
printf("找不到n");
}
return 0;
}
打印输出九九乘法表
int main()
{
int i=0;
int j=0;
for(i=1;i<10;i++)
{ //一共9行
for(j=1;j<=i;j++)
{
printf("%d*%d=%-2d ",i,j,i*j); //"%-2d"的作用是使打印的结果左对齐
}
printf("n"); //打印完一行再分行
}
return 0;
}
数一下1-100中所有整数出现多少个数字9
int main(){
int i=0;
int count=0;
for(i=1;i<=100;i++){
if(i%10==9){
count++;
}
if(i/10==9){
count++;
}
}
printf("count=%dn",count);
return 0;
}
打印1-200之间的素数,并输出总共有多少个
int main(){
int i=0;
int count=0;
for(i=100;i<=sqrt(i);i++){
int j=0;
for(j=2;j<i;j++){
if(i%j==0){
break;
}
}
if(j>sqrt(i)){ //sqrt(i)表示开平方 --记得调用数学库函数
count++;
printf("%dn",i);
}
}
printf("count=%dn",count);
return 0;
}
不引用第三个变量,交换两个数的值
方法一:
int main(){
int a,b;
scanf("%d %d",&a,&b);
a=a+b;
b=a-b;
a=a-b;
printf("a=%d b=%dn",a,b);
return 0;
}
这种方法有缺陷,可能会导致整形溢出 。
方法二:
int main(){
int a,b;
scanf("%d %d",&a,&b);
a=a^b;
b=a^b;
a=a^b;
printf("a=%d b=%dn",a,b);
return 0;
}
有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是 1、2、3、4,组成所有的排列后再去掉不满足条件的排列。
int main()
{
int i,j,k;
for(i=1;i<5;i++) { // 以下为三重循环
for(j=1;j<5;j++) {
for (k=1;k<5;k++) { // 确保i、j、k三位互不相同
if (i!=k&&i!=j&&j!=k) {
printf("%d,%d,%dn",i,j,k);
}
}
}
}
}
企业发放的奖金根据利润提成。
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
60万到100万之间时,高于60万元的部分,可提成1.5%;
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成双精度浮点(double)型。
#include<stdio.h>
int main()
{
double i;
double bonus, bonus1, bonus2, bonus4, bonus6, bonus10 ;
printf("你的净利润是:n");
scanf("%lf",&i);
bonus1=100000*0.1;
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+200000*0.03;
bonus10=bonus6+400000*0.015;
if(i<=100000) {
bonus=i*0.1;
} else if(i<=200000) {
bonus=bonus1+(i-100000)*0.075;
} else if(i<=400000) {
bonus=bonus2+(i-200000)*0.05;
} else if(i<=600000) {
bonus=bonus4+(i-400000)*0.03;
} else if(i<=1000000) {
bonus=bonus6+(i-600000)*0.015;
} else if(i>1000000) {
bonus=bonus10+(i-1000000)*0.01;
}
printf("提成为:bonus=%.3lf",bonus);//结果限制到小数点后三位
return 0;
}
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:
1、则:x + 100 = n2, x + 100 + 168 = m2
2、计算等式:m2 – n2 = (m + n)(m – n) = 168
3、设置: m + n = i,m – n = j,i * j =168,i 和 j 至少一个是偶数
4、可得: m = (i + j) / 2, n = (i – j) / 2,i 和 j 要么都是偶数,要么都是奇数。
5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。
6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。
/* 假设要求的数为: x;
* 则x+100=n的平方;x+100+168=m的平方 ;
* 从而有:m方-n方=(m+n)*(m-n)=168 ;
* 再令m+n=i; m-n=j; i*j=168.
*/
int main (void)
{
int i, j, m, n, x;
for (i = 1; i < 168 / 2 + 1; i++)
{
if (168 % i == 0)
{
j = 168 / i;
if ( i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0)
{
m = (i + j) / 2;
n = (i - j) / 2;
x = n * n - 100;
printf ("%d + 100 = %d * %dn", x, n, n);
printf ("%d + 268 = %d * %dn", x, m, m);
printf ("n");
}
}
}
return 0;
}
输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
#include<stdio.h>
int main()
{
int year, month, day,sumday=0;
int monthday[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
printf("请输入年、月、日,格式为:年,月,日(2015 12 10)n");
scanf("%d %d %d",&year,&month,&day);
if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
{
monthday[1] =29; //闰年的话则把二月置为29天
}
for (int i = 0; i < month-1; i++)
{
sumday += monthday[i];
}
sumday += day;
printf("这是%d年的第%d天n",year,sumday);
return 0;
}
打印出所有的”水仙花数”
所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
int main()
{
int i,x,y,z;
for(i=100;i<1000;i++)
{
x=i%10;
y=i/10%10;
z=i/100%10;
if(i==(x*x*x+y*y*y+z*z*z))
printf("%dn",i);
}
return 0;
}
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:利用while语句,条件为输入的字符不为’n’。 也可以使用ASCⅡ码作为判断条件。
int main(void)
{
char ch;
int alpha = 0, num = 0, space = 0, others = 0;
printf("请输入一些字母:n");
while((ch = getchar()) != 'n')
{
if((ch >= 'a' && ch <= 'z')||(ch >='A' && ch <='Z'))
alpha++;
else if(ch >= '0' && ch <= '9')
num++;
else if(ch == ' ')
space++;
else
others++;
}
printf("字母=%d,数字=%d,空格=%d,其他=%d",alpha,num,space,others);
return 0;
}
求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
程序分析:关键是计算出每一项的值。
int main()
{
int s=0,a,n,t;
printf("请输入要加的数字a和要加的次数n:n");
scanf("%d%d",&a,&n);
t=a;
while(n>0)
{
s+=t;
a=a*10;
t+=a;
n--;
}
printf("a+aa+...=%dn",s);
return 0;
}
用递归的方法求一个数的阶乘
//用递归的方法求一个数的阶乘
int fact(int n)
{
if(n == 0 || n == 1)
return 1;
else
return n*fact(n - 1);
}
int main(void)
{
int i,x;
printf("请输入要求多少的阶乘:");
scanf("%d",&x);
for(i = 0; i <= x; i++)
{
printf("%d! = %dn",i,fact(i));
}
return 0;
}
利用递归函数调用方式,将所输入的字符串,以相反顺序打印出来。
#include <stdio.h>
void fun()
{
char str;
if((str=getchar())!='n') {
fun();
}
if(str!='n') {
printf("%c",str);
}
}
void main()
{
printf("请输入字符: ");
fun();
}
原文地址:https://blog.csdn.net/qq_55908180/article/details/129441332
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_26628.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!