题目1
实现s=1+2+3+…+n,n<10000,n由用户输入,输出s,要求运行结果正确,运行时间尽可能短
#include <stdio.h>
int function(int n)
{
int k = n/2;
if(n%2==0)
return k*(n+1);
else
return k*(n+1)+k+1;
}
int main() {
printf("请输入一个整数:\n");
int n;
scanf("%d",&n);
int s = function(n);
printf("s为:%d\n",s);
return 0;
}
题目2
假设黑白图像由二维矩阵表示,值分别用0和1来表示,
求两个黑白图像的相似度(相似度定义为相同像素点数占总像素点数的百分比)
// 求黑白图像的相似度
#include <stdio.h>
#define M 3
#define N 3
int main() {
int a[M][N]={
{0,1,1},
{1,0,1},
{0,0,1}
};
int b[M][N] ={
{1,0,1},
{0,1,1},
{1,1,1}
} ;
float common = 0;
for(int i=0;i<M;i++){
for(int j=0;j<N;j++){
if(a[i][j]==b[i][j])
common++;
}
}
float result = common/(M*N);
result = result*100;
printf("相似度为:%.3f%%",result);
return 0;
}
题目3
有函数
f(x) = xxxxx-15xxxx+85xxx-225xx+274x-121
已知f(1.5)>0,f(2.4)<0且方程f(x)=0在区间[1.5,2.4]有且只有一个根,请用二分法求出该根。
#include <stdio.h>
#include <math.h>
double function(double x)
{
return x*x*x*x*x-15*x*x*x*x+85*x*x*x-225*x*x+274*x-121;
}
int main() {
double m=1.5,n=2.4,r;
double mid;
while(m<=n){
mid=(m+n)/2;
r=function(mid);
if(r==0)
break;
else{
if(r>0)
m=mid;
else
n=mid;
}
}
printf("%f",mid);
return 0;
}
题目4
对于明文中的每一个字符,将它用它字母表中后n位对应的字符来代替
实现:输入一段密文,输出明文
#include <stdio.h>
int strlen1(char *a){
int len=0;
while(*a!='\0'){
a++;
len++;
}
return len;
}
int main() {
char secret[200] = "MJQQT BTWQI";
char txt[200];
int k=5;
printf("请输入密文位移个数:");
scanf("%d",&k);
printf("密文:");
puts(secret);
int len = strlen1(secret);
//printf("%d",len);
//解密
for(int i=0;i<len;i++){
if(secret[i]>='A'&&secret[i]<='Z'){
if((secret[i]>='A'&&secret[i]<='E'))
txt[i]=secret[i]+26-k;
else
txt[i]=secret[i]-k;
}
else
txt[i]=secret[i];
}
printf("明文:");
puts(txt);
return 0;
}