6 利用递归函数调用方式,将所输入的5个字符,以相反的顺序打印出来
# include <stdio.h>
# include <conio.h>
main(){
int i =5;
void palin(int n);// 在main函数之后定义,需要进行说明
printf("\40:");
plain(i);
printf("\n");
getch();
}
void plain(int n){
char next;
if(n <= 1){
next = getchar();
printf("\n\0:");
putchar(next);
}
else{
next = getchar();
palin(n-1);
putchar(next);
}
}
7 求一百以内的素数
程序分析
#include<stdio.h>
#include<math.h>
int main()
{
int k;
for (int i=2;i<100;i++)
{
bool flag=true;
k=(int)sqrt(i);
for (int j=2;j<=k;j++)
{
if(i%j == 0){
flag=false;
break;
}
}
if(flag == true)
printf("%d ",i);
}
return 0;
}
8 求一个3*3的矩阵对角线元素之和
程序分析
利用双重for循环控制输入二维数组,再将a[i] [i]累加后输出
# include <stdio.h>
void main(){
float a[3][3], sum = 0;
printf("please input rectangle element:\n")
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
scanf("%f", &a[i][j]);
for(int i = 0; i < 3; i++)
sum = sum + a[i][i];
printf("%6.2f", sum);
}
}
9 有一个已经排好序的数组1,4,6,9,13,16,19,28,40,100. 现在输入一个数,要求按原来的规律将它插入到数组中
程序分析
首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入此元素之后的数,依次后移一个位置
# include <stdio.h>
void main(){
int a[11] = {1, 4, 6, 9, 13, 16, 19,28,40,100};
int temp1, temp2, number, end, i, j;
for(i = 0; i < 10; i++)
printf("%5d",a[i]);
printf("\n");
printf("please insert a new number:")
scanf("%d", &number);
end = a[9];
if(number > end)
a[10] = number;
else{
for(i = 0; i < 10; i++){
if(a[i] > number){
temp1 = a[i];
a[i] = number;
for(j = i+1; j < 11; j++){
temp2 = a[j];
a[j] = temp1;
temp1 = temp2;
}
break;
}
}
}
for(i = 0; i < 11; i++){
printf("%6d", a[i]);
}
}
10 取一个整数a从右端开始的4~7位
程序分析
1)先使a右移4位
2)设置一个低4位全为1,其余全为0的数,可用~ ( ~ 0<<4)
3)将上面两者进行&运算
void main(){
unsigned a,b,c,d;
scanf("%o", &a);
b = a >> 4;
c = ~(~0<<4);
d = b & c;
printf("%o\n%o\n", a, d);
}
