1.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1^3+5^3+3^3。
c语言编程题经典题目_c语言程序编程题目
c语言编程题经典题目_c语言程序编程题目
c语言编程题经典题目_c语言程序编程题目
#include
#include
int main()
{int bai_wei,shi_wei,ge_wei,i,sum=0;
for(i=100;i<1000;i++)
{bai_wei=i/100;
shi_wei=(i%100)/10;
ge_wei=i%10;
if(i==pow(bai_wei,3)+pow(shi_wei,3)+pow(ge_wei,3))
{printf("%d ",i);
sum++;
if(sum%5==0)
printf(" ");
}}
printf(" ");
return 0;
}2.请输入任意两个整数x和y,求其公约数和小公倍数。
#include
int main()
{int x,y,min,max,i;
printf("请输入任意两个整数:");
scanf("%d%d",&x,&y);
min=x>y?y:x;
max=x>y?x:y;
for(i=min;i>0;i--)
if(x%i==0&&y%i==0)
{printf("这两个整数的公约数为:%d ",i);
break;
}for(i=max;i<=xy;i++)
if(i%x==0&&i%y==0)
{printf("这两个整数的小公倍数为:%d ",i);
break;
}return 0;
}3.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include
#include
#define N 50
int main()
{int sum1=0,sum2=0,sum3=0,sum4,i=0;
char str[N];
printf("请输入一串字符串:");
scanf("%s",str);
for(i=0;i
{if((str[i]>='a'&&str[i]='A'&&str[i]<='Z'))
sum1++;
if(str[i]==' ')
sum2++;
if(str[i]>='0'&&str[i]<='9')
sum3++;
}sum4=strlen(str)-sum1-sum2-sum3;
printf("英文字母的个数:%d ",sum1);
printf("空格的个数:%d ",sum2);
printf("数字的个数:%d ",sum3);
printf("其他符号的个数:%d ",sum4);
return 0;
}4.求s=a+aa++a+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
#include
#include
int main()
{int a,n,s=0,i,x=0,y=0;
printf("请输入整数a的值:");
scanf("%d",&a);
printf("请输入相加的个数n:");
scanf("%d",&n);
for(i=0;i
{x=y+2pow(10,i);
y=x;
s=s+x;
}printf("s=%d ",s);
return 0;
}5.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。
#include
int main()
{int sum=0,i,j;
printf("在1000以内的完数有:");
for(i=2;i<=1000;i++)
{for(j=1;j
if(i%j==0)
sum=sum+j;
if(sum==i)
printf("%d ",i);
sum=0;
}printf(" ");
return 0;
}6.输入一个不多于5位的正整数,要求:1、求它是几位数;2、逆序打印出个位数字。
#include
int pows(int a,int n)
{int sum=1,i;
for(i=0;i
sum=suma;
return sum;
}int main()
{int n,i,k,x;
printf("n=");
scanf("%d",&n);
for(i=1;i<6;i++)
if(n/pows(10,i)==0)
{printf("%d ",i);
k=i;
break;
}for(i=0;i
{x=n/pows(10,i)%10;
printf("%d",x);
}printf(" ");
return 0;
}7.输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#include
int main()
{int n,a[5],i=0;
printf("请输入一个5位数:");
scanf("%d",&n);
while(n!=0)
{a[i]=n%10;
n=n/10;
i++;
}if(a[0]==a[4]&&a[1]==a[3])
printf("这个数是回文数 ");
else
printf("这个数不是回文数 ");
return 0;
}8.利用递归算法,将所输入的5个字符,以相反顺序打印出来。
#include
void digui(char a[],int n)
{if(n==1)
printf("%c",a[0]);
else
{printf("%c",a[n-1]);
digui(a,n-1);
}}
int main()
{char str[5];
printf("请输入5个字符:");
scanf("%s",str);
digui(str,5);
printf(" ");
return 0;
}9.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…球出这个序列的前20项之和。
#include
int main()
{int i,a=1,b=1;
float sum=0.0;
for(i=1;i<=20;i++)
{sum=sum+(float)(a+i)/b;
b=a+i;
a=i;
}printf("sum=%f ",sum);
return 0;
}10.利用递归算法求5!。
#include
int digui(int n)
{if(n==1)
return 1;
else
return ndigui(n-1);
}int main()
{int n,sum;
printf("n:");
scanf("%d",&n);
sum=digui(n);
printf("sum=%d ",sum);
return 0;
}
rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机,有时候也叫伪随机数,使用 rand() 生成随机数之前需要用随机发生器的初始化函数 srand(unsigned seed)(也位于 stdlib.h 中) 进行伪随机数序列初始化,seed 又叫随机种子,通俗讲就是,如果每次提供的 seed 是一样的话,后每一轮生成的几个随机值也都是一样的,因此叫伪随机数,所以需要每次提供不同的 seed 达到完全的随机,我们通常用时间函数 time(NULL) 作为 seed ,因为时间值每秒都不同,这个函数需要包含以下头文件:
#include
1理论太泛,下面用例子分析理解。
举例分析
先来理解以下伪随机数,编译以下代码:
#include
#include
#include
int main()
{srand(1);
int i;
for (i = 0; i < 10; i++)
printf("%d, ", rand()%11);
}1
23
45
67
89
10
运行结果
8, 9, 9, 1, 7, 5, 5, 10, 1, 0,
可以的这个
666
是D,
char
ch要用来接收一个字符,而不是字符串,所以A被排除
函数的返回值类型是void,就是说没有返回值,B项不合要求,排除
C项中'65'是一个不合法的字符,如果不是转义字符的话单引号里不能有多于一个的字符,而'65'里有两个了,不合法,排除
D项是可以的,个32是直接向char型变量里赋ASCII值,就是把一个空格放到ch中,是合法的,第二个32是可以放进float型变量里的,小数部分因为没有,所以用0补了
int
k=0;
种:k++
//
k的值不变,然后再加;
第二种:k+=1//
等价于k=k+1;
第三种:++1//
每次在赋予的值中加1,一般应用于循环语句中。
第四种:k+1//
这种就等于所定义的值加1就可以了。
++1没有意义是错误的,自加自减,不能用于常量上面,应该是++K,如果就k值的终结果来说,k+1与其他三个不同,因为其他的三个都对k进行了运算后k的值为1,而后一个只是做了整体的运算没有对k的值改变,所以与其他三个不同
接1楼的解释:++
就是自增!k++
就是把
k的值增加1然后赋给k
而k+1
是计算出当前的值!并没有执行赋值作,所以k+1
k值没有变化!
k+=1
+=
一看就知道
将+1后的值=k!
++k
同k++
是一样的!~
k++
k+=1
++1
k+1
k++的意思
k的值先运
运算后在原基础上加一
k+=1的意思
k=k+1
++1
这个感觉是错的
(这个与上面的不同)
k+1
的意思
k的值在加上1
++1是错误表达式,
k++是表示在k的基础上再加1,只有变量才能用“++”,如果时常量,则用自加自减都是错的,希望你能明白!
C语言100道适用专升本超有用
1.十进制数转任意进制数
2.数字三角形
3,编程求某年第 n 天的日期。
4.求周岁
5.编程求出使该算式成立时的这两个数
6.功能:(较难不用看) 编程求任意给两个日期(年 月日)相的天数。
7.把一个数的二进制奇数位和偶数位交换
8.题目要求找出数组中的两个单身狗
9,数字字符串转换为整数
10.升序的数组插入一个数,还保持升序
11.输入年月判断该月多少天
12 .遍历法求名次
13.谁是凶手
14.输入一个整数数组,实现一个函数,来调整数组中的奇数和偶数的位置,奇数在前偶数在后
15.1元一瓶汽水,两个空瓶可以换一瓶,问20元可以喝多少瓶
16.打印一个菱形,输如n的打印2n -1行的菱形
17.输入一个整数找出紧跟在他后面的素数
18.计数求和,Sn=2+22+222+2222+22222
19.输入两个数求小公倍数和公因数,代码中有详解
20.一个数 +100之后是完全平方数,+168还是一个完全平方数
21.数字金字塔
22.字符串左旋
23.[稍难不用看] 要求:写一个函数判断一个字符串是否是另一个字符串旋转后得到的
24.给数组删除重复的元素
25.C语言编程题求1! + 2! + 3! + 4!....+N
26.C语言编程题求斐波那契数(循环法与递归法
27.C语言编程输入n,k求n的k次幂(递归与非递归)
28.(递归)输入一个数,把他的每一位相加在输出出来;
29,实现函数把字符数组的元素逆序 如“abc“,逆序成“cba“
30.递归拆分整数
31.设计以函数打印乘法口诀表
32构造一函数判断是否为素数100-200之间(只能被自己和1整除的数)
33.打印二进制数的奇数位和偶数位;分别打印二进制序列
34.计算M和N二进制中不同的位数,例如 1和7 有两位不同;
35输出1900到2000之间的所有闺年
36,猴子吃桃问题
37.选择排序法 升序排列
38.冒泡排序法
39.求33矩阵对角元素的和
40.把整数数组中的元素值逆序存放
41.杨辉三角形
42.折半查找---必须建立在有序的数组中
43,计算3行80个字符 的类型个数
44.原文与密码
45模拟strcat字符串连接函数
46.模拟strlen(3种方法)
47模拟strcmp
48.模拟字符串拷贝函数strcpy
49.strncpy的模拟
50.strncat模拟实现
51模拟strncmp
52.(较难些可以不看)模拟寻找子串的函数strstr
53.内存拷贝函数
54.判断一个数是不是素数:
53.33矩阵的转置
56任何比2大的偶数,总能表示两个素数
57.输入四位数字输出四个字符
58.把a数组的内容拷贝到b数组每拷贝三个放1个
59.输入一串字符串把其中长的字母拷贝放到另一个数组
60.16进制转换位10进制
61.输入10个整数,的和后一个位置上的交换小的和前面的那个交换
62.报数问题n个人从1报数到3,每次报数到3的那个元素被清空
63.输入多个字符串,排序后输出
64.(难可不看)输入一个字符串,将连续的数字字符串放到另一个二维数组中
65.结构体指针问题
66.三天打鱼两天晒网,第 N 天是打鱼还是晒网?
67.输入多个字符串,然后输出短的字符串
68.3 个数,有两个数一样, 找另一个数
69.有 1000 人捐款, 捐到 10 万就停止捐款。 统计捐款人数和总额
70.指定位置字符串逆序
71.水仙花数
72.求素数因子
73.判断一个数是不是完全平方数?
74.蠕虫问题
75.结构体排序学生情况
76.求一元二次方程的根, ax 方+bx + c=0,ab,c 自己输入
77.累加100--999之间个位数为7的素数女78斐波那契兔子
78迭代求平方根
79.累加二维数组边缘元素的和
80.逗号表达式方面小题
81.白马百担问题
82.八进制转10进制
83.func(func(x++,y++),func(--x,--y));函数调用问题
84.水手分桃子
85挖素数
86.两个有序递增 的数组存到另一个数组还是有序的
87.把字符串中的空格去掉女88.将b字符串的内容插入到a字符串,a字符串保持升席
89.用递归的方法把字符串逆序
90分解质因数
.10进制转16进制
92.10进制转8进制
93.计算并输出n以内10个素数的和
94.完数
95打印X型图案
96.打印空心正方形
97.判断一个数组是否有序
98.整形数组删除指定的数字
99.给字符数组每个元素中间添加一个空格
100.旋转字符
101.求sinx近似值
今天在某qq群见到有人问下面这个题目,当时没太多思路,跟他讨论了下,突然想出了做法。
于是,马上编程实践,没想到,不久就把它实现了。好有成就感。。。
1+11+111+1111+..........+11.....11(后为2009个1) 求和有几个1
(以上为10进制数)
我的:
1 #include stdlib.h
2 #include stdio.h
3 #define size 2009
45 void main()
6 {
7 int result[size] = {0};//存结果中每位所得到的进位值
8 int count = 0;//结果中1的个数
9 int numOfbit=size;//存现在判断的位不加进位的值
10
11 for(int i=0;isize;i++)
12 {//循环判断结果中每位是否为1,并处理进位
13 if(1 == (numOfbit + result[i])%10)
14 {//判断此位是否为1
15 count++;
16 }
17
18 if(numOfbit9)
19 {//处理进位
20 int val = numOfbit%10;
21 int bit = i+1;//要进位的对应位下标
22 do
23 {
24 result[bit] += val%10;
25 val = val%10;
26 bit++;
27 }
28 while(val=10);
29 }
30 numOfbit--;
31 }
32
33 printf("结果中1的个数为%d
",count);
34 }
版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 836084111@qq.com 邮箱删除。