1001 3n+1猜想
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
int n;
scanf("%d", &n);
int count = 0;
while(n != 1){
if(n % 2 != 0){
n = (3 * n + 1) / 2;
count ++;
}
else{
n /= 2;
count ++;
}
}
printf("%d\n", count);
return 0;
cin>>n;
}
1002 写出这个数
/*思路:将123456789(例子)看作字符-48变成int 类型 sum 和,
将sum转换为字符串,对应不同拼音输出
*/
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <sstream>
using namespace std;
int main()
{
char a[100];
gets(a);
int sum=0;
for(int i=0;i<strlen(a);i++)
{
sum=sum+a[i]-'0';
}
char s[100];
sprintf(s,"%d",sum);//类型转换函数
for(int j=0;j<strlen(s);j++)//sizeof 与strlen两个不同 前者是整个数组长度(包含后端空字符),后者不包含
{
if(s[j] == '0'){
printf("ling");
}
else if(s[j] == '1'){
printf("yi");
}
else if(s[j] == '2'){
printf("er");
}
else if(s[j] == '3'){
printf("san");
}
else if(s[j] == '4'){
printf("si");
}
else if(s[j] == '5'){
printf("wu");
}
else if(s[j] == '6'){
printf("liu");
}
else if(s[j] == '7'){
printf("qi");
}
else if(s[j] == '8'){
printf("ba");
}
else if(s[j] == '9'){
printf("jiu");
}
}
}
1003 输出正确PAT
/*思路:
按照三个判定条件,一步一步判定,
1.只有PAT三种字符
2。xPATx x自能是空字符串,或A字符组成的字符串
3.“如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,
或者是仅由字母 A 组成的字符串。”
这句话其实是让考生找出其中的规律。规律如下:a*b=c。其中a,b,c均为字符串中A的数量。
*/
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char a[100];
gets(a);
bool result=true;
for(int i=0;i<strlen(a);i++)
{
if(a[i]!='P'&&a[i]!='A'&&a[i]!='T')
result=false;break;
}
//不能有两个P,T
int countP=0,countT=0;
for(int i=0;i<strlen(a);i++)
{
if(a[i]=='P'){
countP++;
if(countP==2)
result=false;break;
}
if(a[i]=='T'){
countP++;
if(countT==2)
result=false;break;
}
}
if(result==true){
string s=a;
int count1 = s.find("P");
int count2 = s.find("A");
int count3 = s.find("T");//find函数可以找到元素对应下标
if((count1 * (count3 - count1 - 1)) == (strlen(a) - count3 - 1))
printf("ture");
}
else if(result==false)
printf("NO");
}
1004 输出成绩max min
/*
思路:比较输出
*/
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char name[15],sid[15];
char max_name[15],max_sid[15];
char min_name[15],min_sid[15];
int max_grade,min_grade=100;//这个min_grade=100才能比较得出最小值
int grade,n;
cin>>n;
for(int i=0;i<n;i++ )
{
scanf("%s%s%d", name, sid, &grade);//每输入一次 就与max min 比较
if(grade>max_grade){
max_grade = grade;
strcpy(max_name,name);
strcpy(max_sid,sid);
}
if(grade<min_grade){//刚开始写的是> 尴尬
min_grade = grade;
strcpy(min_name,name);//strcpy函数 覆盖
strcpy(min_sid,sid);
}
}
printf("%s %s %d\n",max_name,max_sid,max_grade);
printf("%s %s %d",min_name,min_sid,min_grade);
}
1005 继续3n+1猜想
#include<iostream>
using namespace std;
int main()
{
int bai,shi,ge,n;
cin>>n;
ge=n%10;
shi=(n-ge)/10%10;
bai=(n-shi*10-ge)/100%10;
if(bai!=0)
for(int i=0;i<bai;i++){
printf("B");
}
if(shi!=0)
for(int i=0;i<shi;i++){
printf("S");
}
if(ge!=0)
for(int i=0;i<ge;i++){
printf("G");
}
}