C语言用for循环 1+3+5+7+9…+99
#include <stdio.h>
int main(){
int i;
int sum=0;
for(i=1;i<100;i+=2){
sum=sum+i;
}
printf("%d",sum);
return 0;
}
sum=1+3+5+7+9+……,输入正整数n,求sum的前n项和
#include <stdio.h>
int main(){
int j,n,sum=0,k=1;
printf("请输入一个小余100的正整数n: ");
scanf("%d",&n);
for(j=1;j<n;j++){
sum+=k;
k+=2;
}
printf("sum的前n项和为:%d\n",sum);
return 0;
}
输入一个正整数m,如果m是素数,输出“Yes”,否则,输出“No”。要求定义并调用函数isprime(x)来判断x是否为素数
isprime是求素数的函数.
格式应该是这样的isprime(int x)
用时比如一个数t ,就这么写isprime(t)返回值是1时 说明是素数,返回值是0,则非素数
# include<stdio.h>
# include<math.h>
# include<iostream>
main()
{
int m;
scanf("%d",&m);
int isprime(int );
if(isprime(m))
printf("yes");
else printf("no");
system("pause");
}
int isprime(int x)
{
int i,m;
m=sqrt(x);
for(i=2;i<=m;i++)
if(x%i==0)break;
if(i>m)
return 1;
else return 0;
}
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
# include<stdio.h>
int main(){
char c;
int letters=0,spaces=0,digits=0,others=0;
printf("请输入一串字符:");
while((c=getchar())!='\n'){//注意括号的位置
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
letters++;
else if(c>='0'&&c<='9')
digits++;
else if(c ==' ')//这里要注意,单引号中间要打空格
spaces++;
else
others++;
}
printf("字母有%d个,数字有%d个,空格有%d个,其他有%d个",letters,digits,spaces,others);
return 0;
}
用1,2,3,4四个数字组成不相同并且没有相同数字的三位数
# include<stdio.h>
int main(){
int i=0,j=0,k=0;
int ret=0;
for(i=1;i<=4;i++){//嵌套循环
for(j=1;j<=4;j++){
for(k=1;k<=4;k++){
if((i!=j)&&(j!=k)&&(i!=k)){//去掉重复的四个
ret=i*100+j*10+k;
printf("%10d",ret);//以10个宽度打印
}
}
}
}
return 0;
}
计算1-3+5-7+…-99+101的值
#include <stdio.h>
int main()
{
int i,j,sum=0;
for(i=1,j=1;i<=101;i+=2,j++){
if(j%2==0)//判断偶数项
sum-=i;//偶数项就减
else
sum+=i;
}
printf("%d",sum);
}
计算11-33+55-77+…-9999+101101的值
#include <stdio.h>
int main()
{
int i,j,sum=0;
for(i=1,j=1;i<=101;i+=2,j++){
if(j%2==0)//判断偶数项
sum-=i*i;//偶数项就减
else
sum+=i*i;
}
printf("%d",sum);
}
输入任意两个正整数,求他们的最大公约数。
使用穷举法:
算法简介:将两个数a,b中较小的值赋给i,将a除以i,b也除以i,若两者的余数同时为0时,此时的i就是两者的最大公约数。若不等于0,则将i-1,继续将a除以i,b除以i,直至余数同时为0。
`
#include <stdio.h>
int maxGcd(int min,int max){
int i;
for(i=min;i>0;i--)
{
if((min%i==0)&&(max%i==0)){
return i;
}
}
}
int main(void){
int a,b,ret;
printf("输入两个整数:");
scanf("%d%d",&a,&b);
if(a<b)
{
ret=maxGcd(a,b);
}
else
{
ret=maxGcd(b,a);
}
printf("%d and %d 最大公约数:%d\n",a,b,ret);
return 0;
}
输入5个字符串,按英文字典排序,由小到大顺序输出
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char *t[5]; //5个字符串储存的地址指针
char *p; //用于记录字符串地址的指针
int i,j,min;
cout << "请输入五个字符串" << endl;
for(i=0; i<5; i++)
{
t[i] = new char[20]; //申请字符串储存的空间
cin >> t[i]; //输入字符串
}
/* 思想:
* 1.从当前字符串开始,与之后的所有字符串比较,找到最小(即按字母表
* 应该是最靠前的)的字符串即为排在最前面的字符串,则最小字符串与
* 当前字符串换位;
* 2.从下一个字符串开始继续上一步操作,直到只有一个字符串剩余为止,
* (只有一个字符串剩余就没什么好比较的了,所以下面的循环i是从0到
* 4。)
*/
for(i=0; i<4; i++)
{
min = i; //先假设第i个字符串是剩下的字符串中字母最靠前的字符串,其
//位置为min
for (j=i+1; j<5; j++)//与当前字符串后面的第i+1到第4个字符串相比
if (strcmp(t[min], t[j])>0)//如果t[j]比目前找到的最小字符串还小,说
min = j; //明更小的字符串应该是t[j],当前最小字符串
//位置应该更新为j,故把j位置记录给min,再继
//续找, 直到跳出循环
/* 跳出循环后,min即为当前最小字符串的位置,故t[min]和t[i]交换位置 */
/* 注意t[i]和t[min]中存放的是地址,交换地址就可以 */
p=t[i]; //记录t[i]字符串的首地址给p指针
t[i]=t[min]; //把t[min]字符串的首地址赋给t[i],则t[i]中原来的地址被覆盖了
t[min]=p; //把原来t[i]字符串的首地址赋给t[min]
}
cout << endl;
for(i=0; i<5; i++)//输出字符串
cout << t[i] << endl;
for(i=0; i<5; i++)//释放空间
delete t[i];
return 0;
}