1.从键盘输入一个字符串,将其中的大写字母变小写字母,小写字母变大写字母,并输出。
#include<stdio.h>
void main()
{
int i
;
char a
[20];
printf("请输入字符串的内容:\t");
do{
scanf("%c", &a
[i
]);
i
++;
}while(a
[i
- 1] != '\n');
a
[i
] = '\0';
printf("*******************************\n");
printf("\n输入字符串的内容:\t");
i
= 0;
while(a
[i
] != '\0')
{
printf("%c", a
[i
]);
i
++;
}
printf("*******************************\n");
printf("转换后字符串的内容:\t");
i
= 0;
char c
;
while(a
[i
] != '\0')
{
c
= a
[i
];
if(c
>= 'a' && c
<= 'z')
a
[i
] -= 32;
else if(c
>= 'A' && c
<= 'Z')
a
[i
] += 32;
printf("%c", a
[i
]);
i
++;
}
}
2.把一个整数按大小顺序插入已排好序的数组中
#include<stdio.h>
void main()
{
int i
, j
, p
, q
, s
, n;
int a
[11] = {11, 12, 13, 14, 15, 10, 19, 18, 17, 16 };
for(i
= 0; i
< 10; i
++)
{
p
= i
; q
= a
[i
];
for(j
= i
+ 1; j
< 10; j
++)
if(q
< a
[j
])
{
p
= j
;
q
= a
[j
];
}
if(p
!= i
)
{
s
= a
[i
];
a
[i
] = a
[p
];
a
[p
] = s
;
}
printf("%d\t", a
[i
]);
}
printf("\n***********************************************\n");
printf("input number:\n");
scanf("%d", &n
);
for(i
= 0; i
< 10; i
++)
if(n
> a
[i
])
{
for(s
= 9; s
>= i
; s
--)
a
[s
+ 1] = a
[s
];
break;
}
a
[i
] = n
;
printf("***************************************************\n");
for(i
= 0; i
<= 10; i
++)
printf("%d\t", a
[i
]);
}
3.求水仙花数:输入一个三位数,判断是否是一个水仙花数。(水仙花数是指3位数的各个位数字的立方和等于这个3位数本身。)
#include <stdio.h>
void main()
{
int i
, n
, x1
, x2
, x3
, sum
;
for(i
= 153; i
< 1000; i
++)
{
n
= i
;
x1
= n
% 10;
x2
= n
/ 10 % 10;
x3
= n
/ 100;
sum
= x1
* x1
* x1
+ x2
* x2
* x2
+ x3
* x3
* x3
;
if(sum
== i
)
printf("%d is a narcissus number!\n", i
);
}
}
4.从键盘输入一个字符串与一个指定字符,将字符串中出现的指定字符全部删除。
#include <stdio.h>
#include <string.h>
void prochar(char *str
, char c
)
{
char *p
;
for(p
= str
; *p
!= '\0'; p
++)
if(*p
!= c
)
*str
++= *p
;
*str
= '\0';
}
void main()
{
char str
[80], char_c
;
printf("请输入字符串:");
gets(str
);
printf("请输入要删除的指定字符:");
scanf("%c", &char_c
);
prochar(str
, char_c
);
puts(str
);
}
5.杨辉三角
#include <stdio.h>
#define N 10
void yanghui_triangle(int a
[][N
], int n
);
void main()
{
int i
, j
, n
, b
[N
][N
];
printf("【行数不能超过所定义的N的值】请输入行数:");
scanf("%d", &n
);
yanghui_triangle(b
, n
);
for(i
= 0; i
< n
; i
++)
{
for(j
= 0; j
<= i
; j
++)
printf("%-4d", b
[i
][j
]);
printf("\n");
}
}
void yanghui_triangle(int a
[][N
], int n
)
{
int i
,j
;
for(i
= 0; i
< n
; i
++)
{
a
[i
][0] = 1;
a
[i
][i
] = 1;
}
for(i
= 2; i
< n
; i
++)
for(j
= 1; j
< i
; j
++)
a
[i
][j
] = a
[i
- 1][j
- 1] + a
[i
-1][j
];
}
6.从键盘上输入5个数,输出最大、最小元素的值以及他们的下标
#include <stdio.h>
#define N 5
void main()
{
int i
, j
, k
, max
, min
;
static int a
[5];
for(i
= 0; i
< 5; i
++)
{
printf("请输入第%d个数字:", i
+ 1);
scanf("%d", &a
[i
]);
}
max
= min
= a
[0];
j
= k
= 0;
for(i
= 0; i
< 5; i
++)
{
if(max
< a
[i
])
{
max
= a
[i
];
j
= i
;
}
else if(min
> a
[i
])
{
min
= a
[i
];
k
= i
;
}
}
printf("max : a[%d] = %d, min : a[%d] = %d", j
, max
, k
, min
);
}
7.求两个数的最小公倍数。
#include <stdio.h>
int divisor(int a
, int b
);
int multiple(int a
, int b
);
void main()
{
int a
, b
, c
;
printf("输入第一个数a:");
scanf("%d", &a
);
printf("输入第二个数b:");
scanf("%d", &b
);
c
= multiple(a
, b
);
printf("a和b的最小公倍数c为:%d", c
);
}
int divisor(int a
, int b
)
{
int r
;
while((r
= a
% b
) != 0)
{
a
= b
;
b
= r
;
}
return b
;
}
int multiple(int a
, int b
)
{
int d
;
d
= divisor(a
, b
);
return a
* b
/ d
;
}
8.求两、三个数中较大者的函数
#include <stdio.h>
int max(int, int, int);
void main()
{
int a
, b
, c
, t
;
printf("依次输入三个数:\n请输入第一个数:");
scanf("%d", &a
);
printf("请输入第二个数:");
scanf("%d", &b
);
printf("请输入第三个数:");
scanf("%d", &c
);
t
= max(a
, b
, c
);
printf("max : %d", t
);
}
int max(int a
, int b
, int c
)
{
int t
;
if(a
> b
)
if(a
> c
)
t
= a
;
else
t
= c
;
else
if(b
> c
)
t
= b
;
else
t
= c
;
return t
;
}
9.电文加密问题
【释义】已知电文加密规律为:将字母变成其后面的第3个字母,其他字符保持不变。例如:a变为d。
#include <stdio.h>
void main()
{
char ch
;
printf("请输入字符串:");
while((ch
= getchar()) != '\n')
{
if((ch
>= 'a' && ch
<= 'z') || (ch
>= 'A' && ch
<= 'Z'))
{
ch
+= 3;
if((ch
> 'Z' && ch
< 'a') || (ch
> 'z'))
ch
-= 26;
}
printf("%c", ch
);
}
}
用getchar()函数进行字符的输入,不是从键盘硬件中读取输入的字符,而是从“输入缓冲区”读取字符。
10.冒泡排序法
【释义】:排序过程 (1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n - 1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上 (2)对前n - 1个数进行第二趟冒泡排序,结果使次大的数被安置在第n - 1个元素位置; (3)重复上述过程,共经过n - 1趟冒泡排序后,排序结束。
#include <stdio.h>
void main()
{
int a
[11], i
, j
, t
;
printf("input 10 numbers:\n");
for(i
= 1; i
< 11; i
++)
scanf("%d", &a
[i
]);
printf("the unsorted numbers:\n");
for(i
= 1; i
< 11; i
++)
printf("%d\t", a
[i
]);
printf("\n*********************************\n");
for(j
= 1; j
<= 9; j
++)
for(i
= 1; i
<= 10 - j
; i
++)
if(a
[i
] > a
[i
+ 1])
{
t
= a
[i
];
a
[i
] = a
[i
+ 1];
a
[i
+ 1] = t
;
}
printf("the sorted numbers:\n");
for(i
= 1; i
< 11; i
++)
printf("%d\t", a
[i
]);
}
11.字符数组逆序排列
【释义】把输入的字符串逆序排列,如输入ABCDE,输出EDCBA
#include <stdio.h>
#include <string.h>
int main()
{
char c
, str
[80];
int i
, j
;
printf("Input character array with keyboard:\n");
gets(str
);
for(i
= 0, j
= strlen(str
) - 1; i
< j
; i
++, j
--)
{
c
= str
[i
];
str
[i
] = str
[j
];
str
[j
] = c
;
}
printf("Reversed string:%s", str
);
return 0;
}
12.递归调用(求n的阶乘)
#include <stdio.h>
float fac(int n
)
{
float f
;
if(n
< 0)
{
printf("n < 0, data error!");
}
else if(n
== 0 || n
== 1)
{
f
= 1;
}
else
f
= fac(n
- 1) * n
;
return f
;
}
int main()
{
int n
, y
;
printf("Input a integer number:");
scanf("%d", &n
);
y
= fac(n
);
printf("%d!=%d", n
, y
);
return 0;
}
13.求1到n阶乘的和
#include <stdio.h>
float fac(int n
)
{
float f
;
if(n
< 0)
{
printf("n < 0, input error!");
}
else if(n
== 0 || n
== 1)
f
= 1;
else
f
= fac(n
- 1) * n
;
return f
;
}
int main()
{
int n
, i
;
float y
= 0;
printf("input a figure:\n");
scanf("%d", &n
);
for(i
= 0; i
<= n
; i
++)
y
= y
+ fac(i
);
printf("%d!=%f", n
, y
);
return 0;
}