牛客锦集 新手上路语法入门题解 循环结构习题1001-1020
创始人
2025-06-01 19:58:10
0

1001 上下金字塔
题意:输入两个数,输出两个数的字符金字塔,如样例。

分析:通过观察可以看出,金字塔高度为2n-1行,其中上下对称,每一行先输入空格再输入星号,其中空格的数量是n-i,星号的数量是2i-1,后半金字塔反过来,注意中间最长的一行只输出一遍。

题解:

#include
using namespace std;
int main()
{int n;while(cin >> n){for(int i=1;i<=(2*n-1)/2+1;i++){for(int j=0;j=1;i--){for(int j=0;j

1002 数字三角形
题意:从1开始依次输出,第i行输出i个数。

分析:使用两个循环即可,注意输出格式。

题解:

#include
using namespace std;
int main()
{int n;cin >> n;int k = 1;for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){printf("%4d",k++);}cout << endl;}return 0;
}

1003 字符金字塔
题意:输出字母金字塔。

分析:字符金字塔和第1001题类似,不过这个是输出字符,而且字符的字母还有变化,可以使用char类型输出。

题解:

#include
using namespace std;
int main()
{char c;cin >> c;int a = c-'A'+1;for(int i=1;i<=a;i++){for(int j=0;j=0;j--)printf("%c",'A'+j);cout << endl;}return 0;
}

1004 涂小天与他的画
题意:输入t个数据,输出t组菱形。

分析:和1001题类似。

题解:

#include
using namespace std;
int main()
{int t;cin >> t;int n;while(t--){cin >> n;for(int i=1;i<=n/2+1;i++){for(int j=0;j=1;i--){for(int j=0;j

1005 箭形图案
题意:输出星号组成的箭型图案。

分析:观察输出了n+1行字符,上下对称。每一行的空格为2*(n-i),字符个数为i,下面对称相反,中间一行特殊,没有空格,输出n+1个星号。

题解:

#include
using namespace std;
int main()
{int n;while(cin >> n){for(int i=1;i<=n+1;i++){for(int j=2*n-2*(i-1);j>0;j--)cout << " ";for(int j=0;j=1;i--){for(int j=2*n-2*(i-1);j>0;j--)cout << " ";for(int j=0;j

1006 牛牛学数列
题意:计算数列1-2+3-4+5…+n的值。

分析:循环结构,偶数位加负号,计数累加即可。

题解:

#include
using namespace std;
int main()
{int n;cin >> n;int ans = 0;for(int i=1;i<=n;i++){int num = i;if(i%2==0)num = -num;ans += num;}cout << ans;return 0;
}

1007 牛牛学数列2
题意:计算数列1+1/2+1/3+…+1/N。

分析:浮点数类型累加即可。

题解:

#include
using namespace std;
int main()
{double sum=0.;int n;cin>>n;for(int i=1;i<=n;i++){sum+=1./i;}printf("%.6f",sum);return 0;
}

1008 牛牛学数列3
题意:计算数列1+1/(1-3)+1/(1-3+5)+…+1/(1-3+5-…((-1)^(n-1))*(2n-1))的值。

分析:取flag处理正负,i每次加2,出1 3 5 7奇数。

题解:

#include
using namespace std;
int main()
{int n;cin >> n;double ans = 0.;double f;int flag = 1;for(int i=1;i<=2*n-1;i+=2){f += i*flag;ans += 1.0/ f;flag = -flag;}printf("%.3f", ans);return 0;
}

1009 牛牛学数列4
题意:计算数列1+(1+2)+(1+2+3)+…+(1+2+3+…+n)

分析:这个数列中有n-i+1个i,循环一遍计算累加即可。

题解:

#include
using namespace std;
int main()
{int n;cin >> n;int ans = 0;for(int i=1;i<=n;i++){ans = ans + (n-i+1)*i;}cout << ans;return 0;
}

1010 牛牛学数列5
题意:求46位斐波那契数列。

分析:根据每一项等于前面两项的和的规则递归即可。

题解:

#include
using namespace std;
int main()
{int f[47];f[1] = 1;f[2] = 1;for(int i=3;i<=46;i++)f[i] = f[i-1] + f[i-2];int n;cin >> n;cout << f[n];return 0;
}

1011 牛牛学数列6
题意:根据给出的规则f[i] = f[i-3]+2*f[i-2]+f[i-1],求数列前20项。

分析:递推循环即可。

题解:

#include
using namespace std;
int main()
{int f[30];f[1] = 0;f[2] = 1;f[3] = 1;for(int i=4;i<=20;i++)f[i] = f[i-3]+2*f[i-2]+f[i-1];int n;cin >> n;cout << f[n];return 0;
}

1012 A+B
题意:计算输出多组a+b。

分析:直接输入输出即可,注意多组数据的处理。

题解:

#include
using namespace std;
int main()
{int a, b;while(cin >> a >> b){cout << a + b << endl;}return 0;
}

1013 多组输入a+b
题意:计算输出多组a+b。

分析:直接输入输出即可,注意多组数据的处理。

题解:

#include
using namespace std;
int main()
{int a, b;while(cin >> a >> b){cout << a + b << endl;}return 0;
}

1014 多组输入a+b II
题意:输入组数t,输出t组a+b。

分析:处理多组数据的方式有所变化。

题解:

#include
using namespace std;
int main()
{int t;cin >> t;while(t--){int a, b;cin >> a >> b;cout << a + b << endl;}return 0;
}

1015 多组数据a+b III
题意:多组数据计算和a+b,a和b都等于0的时候结束。

分析:处理多组数据的方式有所变化,特判加break即可。

题解:

#include
using namespace std;
int main()
{int a, b;while(cin >> a >> b){if(a==0&&b==0)break;cout << a + b << endl;}return 0;
}

1016 [NOIP2018]标题统计
题意:统计字符串中多少个字符,即排除空格和换行符。

分析:循环计数即可。

题解:

#include
using namespace std;
int main()
{string s;getline(cin, s);int k=0;for(int i=0;iif(s[i]==' '||s[i]=='\n')k++;}cout << s.size()-k;return 0;
}

1017 栗酱数数
题意:从1开始输数到n,碰到4的倍数和其中含4的数就跳过去,输出这些数。

分析:循环输出,判定4倍数和含有4的数。

题解:

#include
using namespace std;
typedef long long ll;
bool have4(int x)
{while(x!=0){if(x%10==4)return 1;x/=10;}return 0;
}
int main()
{int n;cin >> n;int k=1;while(n!=k){if(k%4==0||have4(k)){k++;continue;}cout << k++ << '\n';}if(n%4!=0)cout << n << endl;return 0;
}

1018 有趣的二进制

题意:统计一个数在64位二进制补码表示下,一共有多少个1。

分析:64位使用unsigned long long存储,循环统计1的个数即可。

题解:

#include
using namespace std;
int main()
{unsigned long long n;while(cin >> n){int ans=0;while(n){if(n%2==1) ans++;n/=2;}cout << ans << endl;}return 0;
}

1019 [NOIP2006]数列
题意:求出k次方序列的第n项,数列规则已给出。

分析:位掩码的思想,每次进一位,如果此位上数值为1,就乘阶数。

题解:

#include
using namespace std;
int main()
{int k, n;cin >> k >> n;long long ans = 0;int f = 1;while(n){ans += (n%2)*f;f *= k;n /= 2;}cout << ans;return 0;
}

1020 只能吃土豆的牛牛
题意:第i个土豆的重量为3*(i-1),问组合的第k大重量是多少。

分析:和上一题类似,位掩码的思想解决。

题解:

#include
using namespace std;
typedef long long ll;
ll solve(ll x)
{ll ans = 0, t = 1;while(x){if(x&1) ans += t;t *= 3;x >>= 1;}return ans;
}
int main()
{ll t, a;cin >> t;for(int i=1;i<=t;i++){cin >> a;printf("Case #%d: %lld\n", i, solve(a));}return 0;
}

相关内容

热门资讯

家装预付资金安全困局如何破解,... 家装预付资金安全困局如何破解 专家提出:建立“先验收后付款”装修资金存管制度 预交数万元甚至数十万元...
工行安康解放路支行积极开展《反... 为深入贯彻落实《国家金融监督管理总局安康监管分局办公室关于开展<反有组织犯罪法>宣传活动的通知》要求...
重庆公布育儿补贴制度实施方案 原标题:每孩每年3600元 重庆公布育儿补贴制度实施方案 11月21日,记者了解到,市卫生健康委、市...
十五运会组委会在深总结本届赛事... 深圳新闻网2025年11月22日讯(深圳报业集团记者 林炜航)11月21日,十五运会组委会在深圳市民...
中国军视网:日本妄言击沉福建舰... 本文转自【中国军视网】; 日本首相高市早苗发表涉台错误言论,公然挑战一个中国原则,甚至还有日本无知政...
重磅!东莞长安50万㎡产城发布... 在当下竞争激烈的市场环境中,中小企业如何突破成本压力,找到一片既能扎根成长又能眺望未来的理想栖息地?...
毕马威:政策、资本等多维着力 ... 由毕马威联合长三角G60科创走廊创新研究中心主办的“长三角高端装备新质领袖榜单发布仪式”于11月21...
河曲县开展驻村帮扶工作政策业务... 来源:河曲县融媒体中心 近日,我县组织开展驻村帮扶工作政策业务集中培训,进一步提升驻村帮扶干部...
羽绒服涨价与猪肉降价有关?经济... 中央气象台发布统计信息,14日至17日,我国今年下半年首轮大范围寒潮天气即将自西向东影响我国,多地降...
周勇,任上落马 11月21日,中央纪委国家监委网站发布通报: 国家能源集团乌海能源党委书记、董事长周勇涉嫌严重违纪违...