基本上...
我們的老師給我們布置了“CozaLozaWoza”的作業。這里 (來自 Chegg 的圖片作為參考)
我最終設法讓它作業(我猜?),但問題是我的代碼仍然在每一行列印不必要的東西,比如在不應該的地方列印Coza、Loza 和 Wozas,你們能告訴我什么我做錯了嗎?還是我錯過了什么?謝謝。
繼承人的代碼:
# include<stdio.h>
# include<conio.h>
main(){
int _a,
_b=110;
for(_a=1;_a<=_b;_a =1){
if(_a%3==0){
printf(" Coza");
}
if(_a%5==0){
printf(" Loza");
}
if(_a%7==0){
printf(" Woza");
}
if(_a%3==0 && _a%5==0){
printf(" CozaLoza");
}
if(_a%3==0 && _a%7==0){
printf(" CozaWoza");
}
if(_a%3!=0 && _a%5!=0 && _a%7!=0){
printf(" %d", _a);
}
if(_a%11==0){
printf("\n");
}
}
}
uj5u.com熱心網友回復:
- 或者,如果您使用標志來記錄數字何時編碼為
CozaLozaWoza,則可以簡化事情。
#include <stdio.h>
#define LINE_BREAK_COUNT 11
#define UPPER_LIMIT 110
int main() {
for (int num = 1; num <= UPPER_LIMIT; num = 1) {
int encoded = 0;
if (num % 3 == 0) {
printf ("Coza");
encoded = 1;
}
if (num % 5 == 0) {
printf ("Loza");
encoded = 1;
}
if (num % 7 == 0) {
printf ("Woza");
encoded = 1;
}
if (!encoded)
printf ("%d", num);
putchar (' '); // space after each number
if (num % LINE_BREAK_COUNT == 0) // Line break
putchar ('\n');
}
return 0;
}
- 正如評論中指出的那樣,您不需要
conio.h&main()應該宣告回傳int - 使用
#defines 代替幻數以便于維護。 _避免在代碼中使用帶有前綴的變數。讓他們對所使用的背景關系保持簡潔。
uj5u.com熱心網友回復:
這是下面給出的更正代碼,它作業得很好。
你在編碼程序中犯了幾個錯誤,這些都是導致你輸出錯誤的原因。
- 你沒有把 else if 條件。所以即使在另一個條件下評估為 true 之后,一些數字也會通過條件。
例如, and15的倍數。因此,當您撰寫程式時,它將傳遞條件 if( ),然后列印CozaLoza,在退出該 if 塊后,它將進入其他條件陳述句,因為您只使用了而不是or 。所以當它輸入 if( ) 和 if( ) 它將再次列印所需的單詞。35_a%3==0 && _a%5==0ifelse ifnested if_a%3==0_a%5==0
# include<stdio.h>
void main(){
int _a;
int _b;
printf("Enter a number: ");
scanf("%d",& _b);
for(_a=1;_a<=_b;_a ){
if(_a%3 == 0 && _a%5==0 && _a%7==0){
printf(" CozaLozaWoza");
}
else if (_a%5==0 && _a%7==0){
printf(" LozaWoza");
}
else if(_a%3==0 && _a%7==0){
printf(" CozaWoza");
}
else if(_a%3==0 && _a%5==0){
printf(" CozaLoza");
}
else if(_a%3==0){
printf(" Coza");
}
else if(_a%5==0){
printf(" Loza");
}
else if(_a%7==0){
printf(" Woza");
}
else{
printf(" %d", _a);
}
if(_a%11==0){
printf("\n");
}
}
}
uj5u.com熱心網友回復:
基于@????? 的答案(非常好),您可以簡單地基于 3、5、7 的倍數構建一個字串,如果填充了字串,則輸出字串,否則輸出數字。您可以使用三元來確定是否輸出前導空格,例如
#include <stdio.h>
#include <string.h>
#define NCHR 16
int main (void) {
int bound;
puts ("Please enter the upper bound:");
if (scanf ("%d", &bound) != 1 || bound < 1) { /* validate input */
fputs ("error: invalid integer argument, or bound < 1.\n", stderr);
return 1;
}
for (int i = 1; i <= bound; i ) { /* loop 1 - bound */
char str[NCHR] = ""; /* array for string to print */
int mod11 = (i - 1) % 11; /* line break/space output check */
if (i - 1) { /* check if line break or leading space needed */
putchar (mod11 == 0 ? '\n' : ' ');
}
if (i % 3 == 0) { /* multiple of 3? */
strcat (str, "Coza");
}
if (i % 5 == 0) { /* multiple of 5? */
strcat (str, "Loza");
}
if (i % 7 == 0) { /* multiple of 7? */
strcat (str, "Woza");
}
if (*str) {
fputs (str, stdout); /* print str */
}
else {
printf ("%d", i); /* print number */
}
}
putchar ('\n'); /* tidy up with newline */
}
示例使用/輸出
$ ./bin/cozalozawoza
Please enter the upper bound:
110
1 2 Coza 4 Loza Coza Woza 8 Coza Loza 11
Coza 13 Woza CozaLoza 16 17 Coza 19 Loza CozaWoza 22
23 Coza Loza 26 Coza Woza 29 CozaLoza 31 32 Coza
34 LozaWoza Coza 37 38 Coza Loza 41 CozaWoza 43 44
CozaLoza 46 47 Coza Woza Loza Coza 52 53 Coza Loza
Woza Coza 58 59 CozaLoza 61 62 CozaWoza 64 Loza Coza
67 68 Coza LozaWoza 71 Coza 73 74 CozaLoza 76 Woza
Coza 79 Loza Coza 82 83 CozaWoza Loza 86 Coza 88
89 CozaLoza Woza 92 Coza 94 Loza Coza 97 Woza Coza
Loza 101 Coza 103 104 CozaLozaWoza 106 107 Coza 109 Loza
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/465494.html
標籤:C
