牛客锦集 新手上路语法入门题解 循环结构习题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;
}

相关内容

热门资讯

黄浦区涉外法律服务联合体正式启... 6月5日下午,黄浦区举行了涉外法律服务联合体启动仪式。上海市司法局副局长宋烈、黄浦区副区长王槐携手按...
阿曼媒体:美关税政策没有赢家 《阿曼时报》网站日前刊发的印度金融专家马杜苏达南题为《特朗普关税政策没有赢家》文章指出,美国政府的关...
全球瞭望丨阿曼媒体:美关税政策... 全球瞭望丨阿曼媒体:美关税政策没有赢家 新华社多哈6月6日电(记者汪强)《阿曼时报》网站日前刊发的...
浦东国际法律服务园开园,打造面... 浦东新区今天举行国际法律服务业高质量发展推进会,集中展示浦东以高质量国际法律服务为更高水平改革开放保...
外高桥:公司市值管理制度已明确... 证券之星消息,外高桥(600648)06月06日在投资者关系平台上答复投资者关心的问题。 投资者提问...
原创 5... 据央视新闻客户端报道,5月30日,《关于建立国际调解院的公约》签署仪式在中国香港举行。 这一全球首个...
河北省延续实施失业保险稳岗惠民... 支持企业稳定岗位 兜牢失业保障底线 河北省延续实施失业保险稳岗惠民政策 日前,河北省人社厅、省财政厅...
【荣誉锦旗】"精明强... 2025年6月5日,正值芒种时节,俗话说"忙有所获,种有所得"。在这个寓意耕耘与收获的时节,北京京尹...
山东农业大学党委常委、副校长周... 大众网记者 高靖程 通讯员 李凡 济宁报道 5月27日,山东农业大学党委常委、副校长周玉玺率队到鱼台...
原创 马... 当地时间6月5日,在经历了四个小时激烈骂战后,马斯克似乎又向特朗普抛出了和平的橄榄枝,频频向特朗普示...