#include <stdio.h>
void gcd(int, int); //函数声明
int main()
{
int a, b;
printf("请输入两个正整数\n");
scanf("%d%d", &a, &b);
gcd(a, b);
}
void gcd(int c, int d) //定义求解函数
{
if (c % d == 0)
printf("这两个数最大公约数为%d\n", d);
else
gcd(d, c % d); //调用自身
}
/*
求(1/1-1/3+1/5-1/7+1/9)*4 对应此程序,求解的分数项为5
*/
#include <stdio.h>
#include <math.h>
float sum (int); //函数声明
int main()
{
int a;
printf("请输入求解的分数项的项数\n");
scanf("%d", &a);
printf("此时的值为%f\n",sum(a));
}
float sum(int a) //定义求解函数
{
int i=0; //定义循环控制变量
int n=0; //定义分母
float sum=0; //定义总和
for(;i<a;i++)
{
n=2*i+1;
sum=pow(-1,i)*1.0/n + sum; //累加求和
}
return 4*sum;
}
/*
求2/1+3/2*******此处代码应该输入20
分子分母都是前两个相加得到后一个
*/
#include <stdio.h>
float sum(int); //定义求解函数
int main()
{
int m;
printf("请输入求解的分数项的总项数\n");
scanf("%d", &m);
printf("此时的值为%.5f\n", sum(m)); //保留五位小数输出
}
float sum(int k)
{
int a[k];
a[0] = 1;
a[1] = 2; //定义初始的两个分母
int b[k];
b[0] = 2;
b[1] = 3; //定义初始的两个分子
int i = 2;
for (; i < k; i++) //每一个分子分母初始值定义
{
a[i] = a[i - 1] + a[i - 2]; // printf("a[%d]=%d\n", i,a[i]);
b[i] = b[i - 1] + b[i - 2]; // printf("b[%d]=%d\n",i, b[i]);
}
float sum = 0;
int j;
for (j = 0; j < k; j++)
{
sum = 1.0 * b[j] / a[j] + sum; //多次测试,此处需要乘上1.0将每一个分数的精确值取出,否则为整数,计算结果不对
}
return sum;
}
/*
求100-200之间所有素数,每行打印输出5个 本题输入100 200
*/
#include <stdio.h>
void sushu(int, int);
void sushu(int a, int b)
{
int i, j, k = 1; //上下限i,j,格式控制k
for (i = a; i <= b; i++)
{
for (j = 2; j < i; j++)
{
if (i % j == 0)
break; //被整除,不是素数,跳出当前循环
}
if (j >= i) //找出在范围内的素数输出
{
printf("%d\t", i);
k = k + 1;
if (k == 6) //控制输出格式
{
k = 1;
printf("\n");
}
}
}
}
int main()
{
int a, b;
printf("请输入查找数据的范围\n");
scanf("%d%d", &a, &b);
printf("所查找数据范围的输出如下\n");
sushu(a, b);
}
#include<stdio.h>
#include<string.h>
int main(void)
{
char string[80];
int i, count = 0, flag = 0;//flag为单词标记
char c;
printf("请输入单词: ");
gets(string); //读入一串字符串
for(i=0; (c = string[i]) != '\0'; i++)
{
if(c == ' ') flag = 0; //如果当前字符是空格,则使flag为0
else if(flag == 0)
{
flag = 1;
count++;//单词数
}
}
printf("总共有%d个单词\n",count);
return 0;
}
#include <stdio.h>
void two(int);
void eight(int);
void sixteen(int );
void two(int n)
{
static int a[32];
int i = 0;
int j = 0;
for (; i < 32; i++)
{
a[i] = n % 2;
n = n / 2;
}
printf("转换为二进制为: ");
for (i = 31; i >= 0; i--)
{
printf("%d", a[i]);
j++;
if (j == 4)
{
printf(" ");
j = 0;
}
}
printf("(B)");
printf("\n");
}
void eight(int n)
{
int a[16];
int i = 0;
int j = 0;
for (; i < 16; i++)
{
a[i] = n % 8;
n = n / 8;
}
printf("转换为八进制为: ");
for (i = 15; i >= 0; i--)
{
printf("%d", a[i]);
j++;
if (j == 4)
{
printf(" ");
j = 0;
}
}
printf("(O)");
printf("\n");
}
void sixteen(int n)
{
char a[8];
int k = 0;
int i = 0;
int j = 0; // switch 语句标志
for (; i < 8; i++)
{
j = a[i] = n % 16;
n = n / 16;
switch (j)
{
case 10:
a[i] = 'A';
break;
case 11:
a[i] = 'B';
break;
case 12:
a[i] = 'C';
break;
case 13:
a[i] = 'D';
break;
case 14:
a[i] = 'E';
break;
case 15:
a[i] = 'F';
break;
default:;
break;
}
}
printf("转换为十六进制为: ");
for (i = 7; i >= 0; i--)
{
if (a[i] >= 'A' && a[i] <= 'F')
printf("%c", a[i]);
else
printf("%d", a[i]);
k++;
if (k == 4)
{
printf(" ");
k = 0;
}
}
printf("(H)");
printf("\n");
}
int main()
{
printf("请输入要转换的正整数: ");
int a;
scanf("%d", &a);
if (a > 0)
{
two(a);
eight(a);
sixteen(a);
}
else
printf("请重新运行,输入要转换的正整数: ");
}
#include <stdio.h>
#include <string.h> //字符串操作库: puts(1)显示输出字符1,strcpy(1,2)复制字符2到1中,strcat(1,2)将字符串2与1连接之后存到1,要求1的空间比2大
int main()
{
char string1[160]="你的电话号:"; //定义空间较大的字符串1
printf("字符串1为: ");puts(string1);
char string2[80]; //定义空间较小的字符串2
printf("请输入字符串2: ");
gets(string2); //读入一串字符串
printf("字符串2为: ");puts(string2);
strcat (string1,string2);printf("连接字符串1和字符串2: ");puts(string1);
strcpy (string2,string1); //由于上一步已经将字符串2和字符串1连接,此时再将字符串1复制到字符串2中,则字符串2为刚刚输出的字符串1
printf("复制字符串1到字符串2后字符串2为: ");puts(string2);
}
#include<stdio.h>
int main()
{
int arr[10]; /*定义一个数组*/
int i,j; /*i,j为将要使用的循环控制变量*/
int temp; /*temp为数值交换时使用的临时变量*/
for(i=0;i<=9;i++) /*输入10个数*/
{
printf("请输入第%d个数: ",i+1);
scanf("%d",&arr[i]);
}
for(i=1;i<=10-1;i++) /*i代表排序轮数,总轮数=元素个数-1*/
{
for(j=0;j<10-i;j++) /*j代表每轮排序次数,次数=个数-轮数-1,但j初值为0*/
{
if(arr[j]>arr[j+1]) /*如果前一项比后一项大,则两项的值互换*/
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printf("排序后的数组:");
for(i=0;i<=9;i++) /*输出排序后的数组*/
{
printf("%d ",arr[i]);
}
return 0;
}
#include <stdio.h>
void test(void);//定义求解函数
int main()
{
test();
}
void test(void)
{
printf("请输入一个在2-1290之间的整数\n");//本人电脑为64位,可以正确计算的数据范围最大到1290.
int a;
scanf("%d", &a);
int c = a / 2; //奇数中间数,定位点
int b[a];
if (a % 2 != 0) // a如果为奇,那么对应的连续的奇数最中间一个就是a*a
{
int i = 0;
b[c] = a * a;
for (i = c; i >= 0; i--)
{
b[c - i] = a * a - 2 * i;
}
for (i = 0; i <= c; i++)
{
b[c + i] = a * a + 2 * i;
}
}
else // a如果为偶数,那么对应的连续的奇数最中间一个就是a*a+1
{
int i = 0;
b[c] = a * a + 1; //中间值
for (i = c; i >= 0; i--)
{
b[c - i] = a * a + 1 - 2 * i;
}
for (i = 0; i <= c; i++)
{
b[c + i] = a * a + 1 + 2 * i;
}
}
int i = 0;
int test1 = a * a * a; // test1存放输入数据的立方值
int test2 = 0; // test2存放连续奇数的总和
printf("连续的奇数分别为:");
for (i = 0; i < a; i++)
{
printf("%d ", b[i]); //打印输出这一连串的奇数
test2 = b[i] + test2;//求和这一连串的奇数
}
printf("\n");
printf("立方和为%d,连续奇数和为%d\n", test1, test2);
//验证数据
if (test1 == test2)
printf("数据验算成功,满足要求\n");
else
printf("程序错误\n");
}