问题 G: 例题5-7 求圆周率pi的近似值
#include <iostream>#include <cstdio>#include <cmath>using namespace std;int main(){double sum = 0.0;double sign = 1;for(double i =1; fabs(sign/i) > 1e-6; i += 2){sum += (sign/i);sign = -sign;}printf("PI=%.8lf\n",4.0 * sum);}
问题 I: 习题5-10 分数序列求和
#include <iostream>using namespace std;int main(){int a=1, b=1;int t;double sum = 0.0;for(int i =1; i <=20;i ++){t= b;b= a+ b;a =t;sum +=(double)b/a;//cout << a << ' ' << b << ' '<< i << ' ' <<sum << endl;}printf("%.6lf\n",sum);//cout << a << ' ' << b << endl;}
问题 A: 习题6-4 有序插入
#include <iostream>using namespace std;int main(){int a[10];for(int i = 0; i < 9 ; i ++){cin >> a[i];}int k;cin >> k;for(int i = 8; i >= 0 ; i --){if(a[i] > k){a[i+1] =a[i];}else{a[i+1]=k;break;}}for(int i = 0; i < 10 ; i ++){cout << a[i] << endl;}}
问题 C: 习题6-6 杨辉三角
#include <iostream>using namespace std;int main(){int n;cin >> n;int i, j, a[n][n];for(i =0; i < n; i ++){a[i][i] =1;a[i][0] =1;}for(i = 2; i < n; i ++){for(j=1; j<i; j ++){a[i][j] = a[i-1][j] + a[i-1][j-1];}}for(i = 0; i < n; i ++){for(j=0; j<=i; j ++){printf("%d ",a[i][j]);}cout << endl;}}
问题 D: 习题6-12 解密
注意ascii码解密的转换
#include <iostream>using namespace std;int main(){string s;cin >> s;string res;for(auto c:s){if(c<='Z' && c >= 'A') res += 'A' + 'Z'-c;else if( c<='z' && c >= 'a') res += 'a' + 'z'-c;else res +=c;}cout << res;}
问题 E: 习题6-13 字符串比较
字符串比较需要直接叠加
#include <iostream>#include <cstring>using namespace std;int main(){char s1[100], s2[100];scanf("%s",s1);scanf("\n%s",s2);int n = max(strlen(s1),strlen(s2));int ret=0;for(int i =0; i <n; i++){ret+= s1[i]-s2[i];}//printf("%s\n",s1);//printf("%s\n",s2);cout << ret;}
#include <iostream>#include <cstring>using namespace std;int main(){int a[20] ={1,1};printf("%d\n",a[0]);printf("%d\n",a[1]);for(int i =2;i < 20; i ++){a[i] = a[i-1] + a[i-2];printf("%d\n",a[i]);}}
问题 B: C语言10.2
#include <iostream>//#include <string>#include <string.h>using namespace std;void swap(int *p1,int *p2){if(*p1 < *p2){int temp = *p1;*p1= *p2;*p2 = temp;}}int main(){int a, b ,c;cin >> a >> b >> c;swap(&a,&c);swap(&a,&b);swap(&b,&c);cout << a <<' '<<b << ' ' <<c << endl;}
问题 C: C语言10.10
#include <iostream>//#include <string>#include <string.h>using namespace std;int main(){char *a = "I love China!";int n;cin >> n;a += n;puts(a);}
问题 D: C语言10.15
#include <iostream>
//#include <string>
#include <string.h>
using namespace std;
void mini(char*p, char*q){
if(strcmp(p,q) > 0){
char x[20];
//char *temp = x;
strcpy(x, p);
strcpy(p, q);
strcpy(q, x);
}
}
int main(){
char s1[20], s2[20], s3[20];
scanf("%s",s1);
scanf("%s",s2);
scanf("%s",s3);
mini(s1,s2);
mini(s1,s3);
mini(s2,s3);
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
return 0;
}
问题 E: C语言10.16
#include <iostream>
using namespace std;
void input(int *num){
for(int i = 0 ; i < 10; i ++){
scanf("%d",&num[i]);
}
}
void proc(int *num){
int max = num[9];
int min = num[0];
int maxi;
int mini;
for(int i=1; i < 10; i ++){
if(num[i] > max){
max = num[i];
maxi = i;
}
if(num[i] < min){
min = num[i];
mini = i;
}
}
int temp;
temp = num[9];
num[9] = num[maxi];
num[maxi] = temp;
int temp1;
temp1 = num[0];
num[0] = num[mini];
num[mini] = temp1;
}
void output(int *num){
for(int i = 0; i < 10; i ++){
printf("%d ", num[i]);
}
printf("\n");
}
int main(){
int a[10];
int *num = a;
input(num);
proc(num);
output(num);
return 0;
}
问题 D: C语言11.7
#include <iostream>
#include <vector>
using namespace std;
struct person{
int num;
char name[10];
char sex;
char job;
union {
int clas;
char position[10];
}category;
};
int main(){
int n;
cin >> n;
vector<person> per(n);
for(int i = 0; i < n; i ++){
scanf("%d %s %c %c", &per[i].num, per[i].name, &per[i].sex, &per[i].job);
if(per[i].job == 's'){
scanf("%d",&per[i].category.clas);
}
if(per[i].job == 't'){
scanf("%s",per[i].category.position);
}
}
for(int i =0; i < n; i ++){
if(per[i].job == 's'){
printf("%d %s %c %c %d\n", per[i].num, per[i].name, per[i].sex, per[i].job,per[i].category.clas);
}
if(per[i].job == 't'){
printf("%d %s %c %c %s\n", per[i].num, per[i].name, per[i].sex, per[i].job,per[i].category.position);
}
}
}
问题 D: C语言11.7
#include<stdio.h>
struct student{
int id;
char name[20];
int c1,c2,c3;
}stu[5];
void input(){
int n=5;
for(int i=0;i<n;i++){
scanf("%d %s %d %d %d",&stu[i].id,stu[i].name,&stu[i].c1,&stu[i].c2,&stu[i].c3);
}
}
void print(){
int n=5;
for(int i=0;i<n;i++){
printf("%d %s %d %d %d\n",stu[i].id,stu[i].name,stu[i].c1,stu[i].c2,stu[i].c3);
}
}
int main(){
input();
print();
return 0;
}
问题 E: C语言11.8
#include <iostream>
#include <vector>
using namespace std;
struct student{
int id;
char name[20];
int c1, c2, c3;
}stu[10];
int main(){
int n = 10;
double cnt1 = 0, cnt2 = 0, cnt3 = 0;
int average[19];
for(int i = 0 ; i < n; i ++){
scanf("%d %s %d %d %d", &stu[i].id, stu[i].name, &stu[i].c1, &stu[i].c2, &stu[i].c3);
cnt1 += stu[i].c1;
cnt2 += stu[i].c2;
cnt3 += stu[i].c3;
average[i] = (stu[i].c1 + stu[i].c2 + stu[i].c3)/3;
}
cnt1 /=10.0;
cnt2 /=10.0;
cnt3 /=10.0;
int max = 0;
int i, k;
for (i = 0;i < 10; i ++){
if (average[i] > max){
max = average[i];
k = i;
}
}
printf("%.2lf %.2lf %.2lf\n", cnt1, cnt2, cnt3);
printf("%d %s %d %d %d", stu[k].id, stu[k].name, stu[k].c1, stu[k].c2, stu[k].c3);
}
[PA T B1001]害死人不偿命的(3n+l)猜想
#include <iostream>
using namespace std;
int main(){
int n, step = 0;
scanf("%d",&n);
while(n != 1){
if(n % 2 == 0) n = n /2;
else n = (3 *n + 1) /2;
step ++;
}
printf("%d\n", step);
return 0;
}
